blob: 8c164e2f08855621e282ed52a2af0c671e31e92b [file] [log] [blame]
# THIS IS PULLED FROM SCRIPTS AND AUTOGENERATED!
# Please use openapi/combine.py to regenerate!
openapi: 3.0.0
info:
version: 1.0.0
description: This is the API specifications for interacting with the Warble Server.
title: Apache Warble API
license:
name: Apache 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
components:
schemas:
APIKeyResult:
properties:
encrypted:
description: Whether the API Key is encrypted (in case of nodes/agents requesting
it)
example: false
type: boolean
key:
description: The (encrypted?) API Key assigned by the server
example: abcdef-1234
type: string
required:
- encrypted
- key
ActionCompleted:
properties:
message:
description: Acknowledgement message
example: Action completed
type: string
required:
- message
Empty:
properties:
id:
description: optional object ID
type: string
page:
description: optional page id
type: string
required: []
Error:
properties:
code:
description: HTTP Error Code
example: 403
format: int16
type: integer
reason:
description: Human readable error message
example: You need to be logged in to view this endpoint!
type: string
required:
- code
- reason
NodeCredentials:
properties:
hostname:
description: The node's own perceived hostname
example: foo1.warble.xyz
type: string
pubkey:
description: The node's self-generated public RSA key, PEM-encoded
type: string
version:
description: The version of Warble the node is running
example: 0.1.0
type: string
required:
- hostname
- pubkey
- version
NodeDetails:
properties:
description:
description: A description of the node
example: This is the internal node in DC1
type: string
enabled:
description: Whether the node is enabled or paused
example: true
type: boolean
hostname:
description: The node's own perceived hostname
example: foo1.warble.xyz
type: string
id:
description: the numeric ID of the node to modify
example: 42
type: integer
ip:
description: The IP generally associated with this client
type: string
lastping:
description: The last UNIX timestamp of activity from the client
type: integer
location:
description: Physical location of the node
example: DC1, Chicago, Illinois
type: string
pubkey:
description: The node's self-generated public RSA key, PEM-encoded
type: string
verified:
description: Whether the node is verified as ours or not
example: true
type: boolean
version:
description: The version of Warble the node is running
example: 0.1.0
type: string
required:
- id
Timeseries:
properties:
interval:
type: string
okay:
type: boolean
timeseries:
items:
$ref: '#/components/schemas/TimeseriesObject'
type: array
TimeseriesObject:
properties:
$item:
description: A timeseries object
example: 50
type: integer
$otheritem:
description: A timeseries object
example: 26
type: integer
date:
description: Seconds since UNIX epoch
example: 1508273
type: integer
required:
- date
UserAccount:
properties:
displayname:
description: A display name (e.g. full name) for the account
example: Warble User
type: string
email:
description: Desired username (email address)
example: guest@warble.xyz
type: string
password:
description: Desired password for the account
example: warbledemo
type: string
required:
- email
- password
- displayname
UserCredentials:
properties:
password:
description: User password
example: warbledemo
type: string
username:
description: Username (email?)
example: admin
type: string
required:
- username
- password
WidgetApp:
properties:
blocks:
description: Size (width) in UI blocks of the app
example: 4
type: integer
datatype:
description: The top category of this data
example: repo
type: string
name:
description: The title of the widget app
example: Widget Title
type: string
representation:
description: The visual representation style of this widget
example: donut
type: string
source:
description: The API endpoint to get data from
example: code-evolution
type: string
target:
type: string
text:
description: Text to insert into the widget (if paragraph type widget)
type: string
type:
description: The type of widget
example: My Widget
type: string
required:
- type
- name
- blocks
WidgetDesign:
properties:
rows:
items:
$ref: '#/components/schemas/WidgetRow'
type: array
title:
type: string
WidgetRow:
properties:
children:
items:
$ref: '#/components/schemas/WidgetApp'
type: array
name:
type: string
defaultWidgetArgs:
properties:
author:
description: Turns on author view for code results, as opposed to the default
committer view
type: boolean
collapse:
description: for some widgets, this collapses sources based on a regex
type: string
distinguish:
description: Enables distinguishing different types of data objects, subject
to the individual API endpoint
example: false
type: boolean
email:
description: filter sources based on an email (a person)
type: string
from:
description: If specified, compile data from this timestamp onwards
example: 1400000000
type: integer
interval:
description: If fetching histograms, this specifies the interval to pack
figures into. Can be day, week, month, quarter or year
example: month
type: string
links:
description: for relationship maps, this denotes the minimum link strength
(no. of connections) that makes up a link.
type: integer
page:
type: string
quick:
description: Turns on quick data for some endpoints, returning only sparse
data (thus less traffic)
example: false
type: boolean
relative:
description: Enables relative comparison mode for API endpoints that have
this feature.
example: false
type: boolean
search:
description: for some widgets, this enables sub-filtering based on searches
type: string
source:
description: If specified, only compile data on this specific sourceID
example: abcdef12345678
type: string
sources:
description: for some widget, this fetches all sources
type: boolean
span:
description: For factor charts, denotes the number of months to base factors
on from
example: 2
type: integer
subfilter:
description: Quickly defined view by sub-filtering the existing view and
matching on sourceURLs
type: string
to:
description: If specified, only compile data up until here
example: 1503483273
type: integer
types:
description: If set, only return data from sources matching these types
example:
- jira
- bugzilla
type: array
unique:
description: Only compile data from unique commits, ignore duplicates
type: boolean
view:
description: ID Of optional view to use
example: abcdef12345678
type: string
securitySchemes:
APIKeyAuth:
in: headers
name: APIKey
type: apiKey
cookieAuth:
in: cookie
name: warble_session
type: apiKey
paths:
/api/account:
delete:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserName'
description: User ID
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ActionCompleted'
description: 200 response
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
security:
- cookieAuth: []
summary: Delete an account
patch:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserAccountEdit'
description: User credentials
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ActionCompleted'
description: 200 response
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
summary: Edit an account
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserAccount'
description: User credentials
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ActionCompleted'
description: 200 response
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
summary: Create a new account
/api/node/list:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/NodeList'
description: List of nodes in registry
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
summary: Lists the nodes in the registry
/api/node/modify:
delete:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NodeDetails'
description: Node to remove
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ActionCompleted'
description: Node successfully removed from registry
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
summary: Deletes a registered node from the server
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NodeDetails'
description: Node details to modify
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ActionCompleted'
description: Node successfully modified on server
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
summary: Modifies base data of a node in the registry
/api/node/register:
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NodeCredentials'
description: Node credentials
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/APIKeyResult'
description: Node successfully registered with server
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
summary: Registers a new node with the Warble server
/api/node/status:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/NodeDetails'
description: Node status
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
summary: Displays the current status of a node
/api/node/tasks:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TaskList'
description: Node task list
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
summary: Returns a list of tasks assigned to a given node
/api/session:
delete:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Empty'
description: Nada
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ActionCompleted'
description: Logout successful
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
security:
- cookieAuth: []
summary: Log out (remove session)
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UserData'
description: 200 response
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
security:
- cookieAuth: []
summary: Display your login details
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserCredentials'
description: User credentials
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ActionCompleted'
description: Login successful
headers:
Set-Cookie:
schema:
example: 77488a26-23c2-4e29-94a1-6a0738f6a3ff
type: string
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
summary: Log in
/api/widgets/{pageid}:
get:
parameters:
- description: Page ID to fetch design for
in: path
name: pageid
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WidgetDesign'
description: 200 Response
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: unexpected error
security:
- cookieAuth: []
summary: Shows the widget layout for a specific page