Files
wlan-cloud-loadsim/api/openapi.yaml
Stephane Bourque b656254bfd Fixing API
2020-12-17 11:43:59 -08:00

856 lines
23 KiB
YAML

openapi: 3.0.0
info:
title: OWLS API
description: OpenWiFi Load Simulator API
version: 0.0.1
termsOfService:
http://example.com/terms/
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
contact:
name: Arilia Support
email: owlsapisupport@arilia.com
url: https://www.arilia.com/owlsapisupport
servers:
- url: 'http://renegademac.arilia.com:9090/api/v1'
- url: 'http://localhost:9090/api/v1'
- url: 'http://debfarm1-node-b.arilia.com:9090/api/v1'
security:
- ApiKeyAuth: []
paths:
/ouis:
get:
tags: [ OUIs ]
summary: Get the list of all available OUIs as known by the system.
operationId: getOUIs
description: test
parameters:
- in: query
description: Pagination start (starts at 1. If not specified, 1 is assumed)
name: offset
schema:
type: integer
required: false
- in: query
description: Maximum number of entries to return (if absent, no limit is assumed)
name: limit
schema:
type: integer
required: false
- in: query
description: Filter the results
name: filter
schema:
type: string
required: false
responses:
200:
description: Successful retrieval of OUI array.
content:
application/json:
schema:
$ref: '#/components/schemas/OUIsPagination'
403:
$ref: '#/components/responses/Unauthorized'
/ouis/{id}:
get:
tags: [ OUIs ]
summary: Get the manufacturer associated with an OUI.
operationId: getOUI
parameters:
- in: path
description:
The OUI for which you want to find the manufacturer.
name:
id
schema:
type: string
required:
true
responses:
200:
description: Successful retrieval of OUI array.
content:
application/json:
schema:
$ref: '#/components/schemas/OUIMaker'
403:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
/nodes:
get:
tags: [Nodes]
summary: Retrieve the list of nodes available for the simulation.
operationId: getNodeList
parameters:
- in: query
description: Pagination start (starts at 1. If not specified, 1 is assumed)
name: offset
schema:
type: integer
required: false
- in: query
description: Maximum number of entries to return (if absent, no limit is assumed)
name: limit
schema:
type: integer
required: false
- in: query
description: Filter the results
name: filter
schema:
type: string
required: false
- in: query
description: Detailed version
name: details
schema:
type: integer
required: false
- in: query
description: Detailed version
name: types
schema:
type: integer
required: false
responses:
200:
description: The list of Nodes Currently connected.
content:
application/json:
schema:
$ref: '#/components/schemas/NodeList'
/vendors:
get:
tags: [ Manufacturers ]
summary: Get the list of all available OUIs as known by the system for a given manufacturer.
operationId: getManufacturers
parameters:
- in: query
description: Pagination start (starts at 1. If not specified, 1 is assumed)
name: offset
schema:
type: integer
required: false
- in: query
description: Maximum number of entries to return (if absent, no limit is assumed)
name: limit
schema:
type: integer
required: false
- in: query
description: Filter the results
name: filter
schema:
type: string
required: false
responses:
200:
description: Successful retrieval of OUI array.
content:
application/json:
schema:
$ref: '#/components/schemas/MakerList'
403:
$ref: '#/components/responses/Unauthorized'
/vendors/{id}:
get:
tags: [ Manufacturers ]
summary: Get the OUIs associated with a maker.
operationId: getManufacturer
parameters:
- in: path
description: The OUI for which you want to find the manufacturer.
name: id
schema:
type: string
required: true
responses:
200:
description: Successful retrieval of OUI array.
content:
application/json:
schema:
$ref: '#/components/schemas/MakerOUIList'
403:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
/cas:
get:
tags: [ CA ]
summary: Get a list of existing CAs
operationId: getCAs
parameters:
- in: query
description: Pagination start (starts at 1. If not specified, 1 is assumed)
name: offset
schema:
type: integer
required: false
- in: query
description: Maximum number of entries to return (if absent, no limit is assumed)
name: limit
schema:
type: integer
required: false
- in: query
description: Filter the results
name: filter
schema:
type: string
required: false
responses:
200:
description: Return the list of CAs.This can be an empty list.
content:
application/json:
schema:
$ref: '#/components/schemas/CAsPagination'
403:
$ref: '#/components/responses/Unauthorized'
/cas/{id}:
get:
tags: [CA]
summary: Get the details about a single CA
operationId: getASingleCA
parameters:
- in: path
description: The name of the CA we are interested in.
name: id
schema:
type: string
required: true
responses:
200:
description: Details of the requested CA
content:
application/json:
schema:
$ref: '#/components/schemas/CADetails'
403:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
post:
tags: [CA]
summary: Create a new CA
operationId: createCA
parameters:
- in: path
description: The name of the CA we are interested in.
name: id
schema:
type: string
required: true
requestBody:
description: The information about the CA
required: true
content:
application/json:
schema:
properties:
name:
type: string
key:
type: string
cert:
type: string
password:
type: string
responses:
201:
description: Creation of a CA success
content:
application/json:
schema:
$ref: '#/components/schemas/CADetails'
204:
description: Update of a CA success
content:
application/json:
schema:
$ref: '#/components/schemas/CADetails'
403:
$ref: '#/components/responses/Unauthorized'
delete:
tags: [CA]
summary: Remove all information about a given CA
operationId: RemoveCA
parameters:
- in: path
description: The name of the CA to remove
name: id
schema:
type: string
required: true
responses:
200:
description: Succesful removal of CA
content:
application/json:
schema:
$ref: '#/components/schemas/GenericGoodAnswer'
403:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
/simulations:
get:
tags: [Simulations]
summary: List all existing simulations
operationId: listSimulations
parameters:
- in: query
description: Pagination start (starts at 1. If not specified, 1 is assumed)
name: offset
schema:
type: integer
required: false
- in: query
description: Maximum number of entries to return (if absent, no limit is assumed)
name: limit
schema:
type: integer
required: false
- in: query
description: Filter the results
name: filter
schema:
type: string
required: false
responses:
200:
description: Return the list of simulations.This can be an empty list.
content:
application/json:
schema:
$ref: '#/components/schemas/SimulationsPagination'
403:
$ref: '#/components/responses/Unauthorized'
/simulations/{id}:
get:
tags: [Simulations]
summary: Get the details about a single simulation
operationId: getASingleSimulation
parameters:
- in: path
description: The name of the simulation we are interested in.
name: id
schema:
type: string
required: true
responses:
200:
description: Details of the requested simulation
content:
application/json:
schema:
$ref: '#/components/schemas/SimulationDetails'
403:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
post:
tags: [Simulations]
summary: Update the details about a single CA
operationId: createASingleSimulation
parameters:
- in: path
description: The name of the simulation we are creating.
name: id
schema:
type: string
required: true
requestBody:
description: The information about the device
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SimulationDetails'
responses:
200:
description: Return on success
content:
application/json:
schema:
$ref: '#/components/schemas/SimulationDetails'
201:
description: Return on success
content:
application/json:
schema:
$ref: '#/components/schemas/SimulationDetails'
204:
description: Return on success
content:
application/json:
schema:
$ref: '#/components/schemas/SimulationDetails'
403:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
delete:
tags: [Simulations]
summary: Remove all information about a given simulation
operationId: removeSimulation
parameters:
- in: path
description: The name of the simulation to remove
name: id
schema:
type: string
required: true
responses:
200:
$ref: '#/components/responses/Success'
403:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
/hardware_definitions:
get:
tags: [ Hardware ]
summary: Get the list of all available hardware as known by the system.
operationId: getHardwares
description: Hardware definitions
parameters:
- in: query
description: Pagination start (starts at 1. If not specified, 1 is assumed)
name: offset
schema:
type: integer
required: false
- in: query
description: Maximum number of entries to return (if absent, no limit is assumed)
name: limit
schema:
type: integer
required: false
- in: query
description: Filter the results
name: filter
schema:
type: string
required: false
responses:
200:
description: Successful retrieval of Hardware Defintions array.
content:
application/json:
schema:
$ref: '#/components/schemas/HardwareDefinitionsList'
403:
$ref: '#/components/responses/Unauthorized'
/actions:
get:
description: List simulation actions
tags: [ Actions ]
summary: List all outstdnaing or completed actions
operationId: getActions
parameters:
- in: query
description: Pagination start (starts at 1. If not specified, 1 is assumed)
name: offset
schema:
type: integer
required: false
- in: query
description: Maximum number of entries to return (if absent, no limit is assumed)
name: limit
schema:
type: integer
required: false
responses:
200:
description: Contains the list of currently outstanding actions
content:
application/json:
schema:
$ref: '#/components/schemas/ActionList'
403:
$ref: '#/components/responses/Unauthorized'
post:
description: Launch an action
tags: [ Actions ]
summary: Create an action for the simulation
operationId: createAction
requestBody:
description: The information about the device
required: true
content:
application/json:
schema:
properties:
# only actions supported are
# prepare,push,start,stop,pause,cancel,restart
action:
type: string
simulation:
type: string
parameters:
# Only supported parameter is stagger
# Only supported value is X/Y
# where X and Y are integers
# X is the number of devices
# Y is over which interval in ms
# 2/2000 means 2 devices per 2000ms (2s)
type: array
items:
properties:
name:
type: string
value:
type: string
responses:
200:
description: Success after posting an action
content:
application/json:
schema:
properties:
action:
type: string
simulation:
description: Simulation name associated with the action.
type: string
id:
description: ID givent to the action.
type: string
403:
$ref: '#/components/responses/Unauthorized'
components:
responses:
NotFound:
description: The specified resource was not found
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
Success:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/GenericGoodAnswer'
securitySchemes:
ApiKeyAuth: # arbitrary name for the security scheme
type: apiKey
in: header
name: X-API-KEY
schemas:
GenericErrorResponse:
description: Typical error response
properties:
ErrorCode:
type: integer
ErrorDetails:
type: string
ErrorDescription:
type: string
GenericGoodAnswer:
description: used for all succesful responses.
properties:
Operation:
type: string
Details:
type: string
Code:
type: integer
OUIList:
description: List of OUIs.
properties:
OUIs:
type: array
items:
type: string
MakerList:
description: List of Manufacturers.
properties:
Manufacturers:
type: array
items:
type: string
MakerOUIList:
description: OUIs associated with a manufacturer.
properties:
Manufacturer:
type:
string
OUIs:
type: array
items:
type: string
OUIMaker:
description: Manufacturer associated with an OUI.
properties:
OUI:
type:
string
Manufacturer:
type:
string
CAList:
description: A list of CAs
properties:
CAs:
type: array
items:
type: string
CADetails:
description: Details information about a CA
properties:
Name:
description: Name of the CA (may not contains special characters)
type: string
Key:
description: The key for the CA
type: string
format: byte
Cert:
description: The certificate for the CA
type: string
format: byte
HardwareDefinitionsList:
description: List of hardware definitions
readOnly: true
properties:
data:
type: array
items:
$ref: '#/components/schemas/HardwareDefinitions'
HardwareDefinitions:
description: Hardware details
readOnly: true
properties:
id:
type: string
description:
type: string
vendor:
type: string
model:
type: string
firmware:
type: string
capabilities:
type: array
items:
type: string
PaginationInfo:
description: Optional information about pagination during bulk operations
readOnly: true
properties:
Limit:
description: Selected limit
type: integer
Offset:
description: Starting point
type: integer
PreviousOffset:
description: the previous offset or null if there is none
type: integer
NextOffset:
description: the next offset or null if there is none
type: integer
CurrentPage:
description: the current page or null if it does not exist (e.g., out of bounds)
type: integer
PageCount:
description: the total number of pages
type: integer
TotalCount:
description: the total number of elements in the collection
type: integer
CAsPagination:
description: Returning a list of CAs
readOnly: true
properties:
Data:
$ref: '#/components/schemas/CAList'
Meta:
$ref: '#/components/schemas/PaginationInfo'
SimulationsPagination:
description: Returning a list of Simulations
readOnly: true
properties:
Data:
$ref: '#/components/schemas/SimulationList'
Meta:
$ref: '#/components/schemas/PaginationInfo'
OUIsPagination:
description: Returning a list of OUIs
readOnly: true
properties:
Data:
$ref: '#/components/schemas/OUIList'
Meta:
$ref: '#/components/schemas/PaginationInfo'
DetailedNodeList:
description: Detailed list of nodes.
readOnly: true
properties:
data:
description: Node list
type: array
items:
$ref: '#/components/schemas/NodeDetails'
Meta:
$ref: '#/components/schemas/PaginationInfo'
SimulationList:
description: List of simulations
readOnly: true
properties:
data:
type: array
items:
$ref: '#/components/schemas/SimulationDetails'
NodeDetails:
description: Detaails of a node
readOnly: true
properties:
node:
type: string
processes:
type: integer
worst:
type: number
total:
type: number
allocated:
type: number
type:
type: string
SimulationDetails:
description: Details of the simulation
properties:
name:
description: Name of the simulation
type: string
caname:
description: CA Associated with the simulation (must exist)
type: string
num_devices:
description: Number of devices for this simulation
type: integer
nodes:
type: array
items:
type: string
server:
type: string
port:
type: integer
creation_date:
type: string
readOnly: true
assets_created:
type: boolean
readOnly: true
NodeList:
description: List of nodes.
readOnly: true
properties:
Nodes:
description: Node list
type: array
oneOf:
- type: string
- $ref: '#/components/schemas/DetailedNodeList'
items:
type: string
Meta:
$ref: '#/components/schemas/PaginationInfo'
ActionList:
description: List of actions
readOnly: true
properties:
data:
type: array
items:
$ref: '#/components/schemas/ActionDetails'
ActionDetails:
description: Action details
readOnly: true
properties:
id:
type: string
operation:
type: string
parameters:
type: array
items:
properties:
name:
type: string
value:
type: string
status:
type: string
created:
type: string
format: date
completed:
type: string
format: date
done_count:
type: integer
target_count:
type: integer