@signalk/freeboard-sk
Version:
Openlayers chart plotter implementation for Signal K
353 lines (352 loc) • 12.6 kB
JSON
{
"openapi": "3.0.0",
"info": {
"version": "2.18.0",
"title": "Freeboard-SK API",
"description": "API endpoints exposed by Freeboard-SK to support application functionality and experimental features.",
"termsOfService": "http://signalk.org/terms/",
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
}
},
"externalDocs": {
"url": "http://signalk.org/specification/",
"description": "Signal K specification."
},
"servers": [
{
"url": "/"
}
],
"tags": [
{
"name": "Alarms",
"description": "Standard alarms."
},
{
"name": "Areas",
"description": "Area alarms."
}
],
"components": {
"schemas": {
"Position": {
"type": "object",
"required": ["latitude", "longitude"],
"properties": {
"latitude": {
"type": "number",
"format": "float"
},
"longitude": {
"type": "number",
"format": "float"
}
}
},
"IsoTime": {
"type": "string",
"description": "Date / Time when data values were recorded",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)((-(\\d{2}):(\\d{2})|Z)?)$",
"example": "2022-04-22T05:02:56.484Z"
},
"AreaAlarmDef": {
"type": "object",
"required": ["trigger", "geometry"],
"properties": {
"geometry": {
"type": "string",
"enum": ["polygon", "circle", "region"]
},
"trigger": {
"type": "string",
"enum": ["entry", "exit"]
},
"coords": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Position"
},
"description": "Coordinates of the alarm area. `(required when geometry = 'polygon')`"
},
"center": {
"$ref": "#/components/schemas/Position",
"description": "Center of circlular area. `(required when geometry = 'circle')`"
},
"radius": {
"type": "number",
"description": "Circle radius in meters. `(required when geometry = 'circle')`"
},
"name": {
"type": "string"
}
}
}
},
"responses": {
"200OKResponse": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Request success response",
"properties": {
"state": {
"type": "string",
"enum": ["COMPLETED"]
},
"statusCode": {
"type": "number",
"enum": [200]
}
},
"required": ["state", "statusCode"]
}
}
}
},
"ErrorResponse": {
"description": "Failed operation",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Request error response",
"properties": {
"state": {
"type": "string",
"enum": ["FAILED"]
},
"statusCode": {
"type": "number",
"enum": [404]
},
"message": {
"type": "string"
}
},
"required": ["state", "statusCode", "message"]
}
}
}
}
},
"parameters": {
"AlarmIdParam": {
"in": "path",
"required": true,
"name": "id",
"description": "Alarm identifier.",
"schema": {
"type": "number"
}
},
"AlarmTypeParam": {
"in": "path",
"required": true,
"name": "alarmType",
"description": "Alarm type.",
"schema": {
"type": "string",
"enum": [
"mob",
"fire",
"sinking",
"flooding",
"collision",
"grounding",
"listing",
"adrift",
"piracy",
"abandon",
"aground"
]
}
}
},
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT"
},
"cookieAuth": {
"type": "apiKey",
"in": "cookie",
"name": "JAUTHENTICATION"
}
}
},
"security": [{ "cookieAuth": [] }, { "bearerAuth": [] }],
"paths": {
"/signalk/v2/api/alarms/area": {
"post": {
"tags": ["Areas"],
"summary": "Set Alarm area.",
"requestBody": {
"description": "Sets the defined area to monitor for vessel entry /exit.",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AreaAlarmDef"
}
}
}
},
"responses": {
"200ActionResponse": {
"$ref": "#/components/responses/200OKResponse"
},
"default": {
"$ref": "#/components/responses/ErrorResponse"
}
}
}
},
"/signalk/v2/api/alarms/area/{id}": {
"parameters": [
{
"$ref": "#/components/parameters/AlarmIdParam"
}
],
"put": {
"tags": ["Areas"],
"summary": "Update Alarm area OR Set the `Region` resource with the supplied identifier as the alarm area.",
"requestBody": {
"description": "Updates the area details for the supplied area identfier.",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AreaAlarmDef"
}
}
}
},
"responses": {
"200ActionResponse": {
"$ref": "#/components/responses/200OKResponse"
},
"default": {
"$ref": "#/components/responses/ErrorResponse"
}
}
},
"delete": {
"tags": ["Areas"],
"summary": "Clear / cancel Area Alarm.",
"responses": {
"200ActionResponse": {
"$ref": "#/components/responses/200OKResponse"
},
"default": {
"$ref": "#/components/responses/ErrorResponse"
}
}
}
},
"/signalk/v2/api/alarms/area/{id}/silence": {
"parameters": [
{
"$ref": "#/components/parameters/AlarmIdParam"
}
],
"post": {
"tags": ["Areas"],
"summary": "Silence Area Alarm.",
"responses": {
"200ActionResponse": {
"$ref": "#/components/responses/200OKResponse"
},
"default": {
"$ref": "#/components/responses/ErrorResponse"
}
}
}
},
"/signalk/v2/api/alarms/{alarmType}": {
"parameters": [
{
"$ref": "#/components/parameters/AlarmTypeParam"
}
],
"post": {
"tags": ["Alarms"],
"summary": "Raise Alarm.",
"requestBody": {
"description": "Alarm message text.",
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Alarm message text.",
"example": "Person overboard!"
}
}
}
}
}
},
"responses": {
"200ActionResponse": {
"$ref": "#/components/responses/200OKResponse"
},
"default": {
"$ref": "#/components/responses/ErrorResponse"
}
}
}
},
"/signalk/v2/api/alarms/{alarmType}/{id}": {
"parameters": [
{
"$ref": "#/components/parameters/AlarmTypeParam"
},
{
"$ref": "#/components/parameters/AlarmIdParam"
}
],
"delete": {
"tags": ["Alarms"],
"summary": "Clear / cancel Alarm.",
"responses": {
"200ActionResponse": {
"$ref": "#/components/responses/200OKResponse"
},
"default": {
"$ref": "#/components/responses/ErrorResponse"
}
}
}
},
"/signalk/v2/api/alarms/{alarmType}/{id}/silence": {
"parameters": [
{
"$ref": "#/components/parameters/AlarmTypeParam"
},
{
"$ref": "#/components/parameters/AlarmIdParam"
}
],
"post": {
"tags": ["Alarms"],
"summary": "Silence Alarm.",
"responses": {
"200ActionResponse": {
"$ref": "#/components/responses/200OKResponse"
},
"default": {
"$ref": "#/components/responses/ErrorResponse"
}
}
}
}
}
}