Initial commit
This commit is contained in:
commit
af2f593fb8
66 changed files with 8735 additions and 0 deletions
457
static/swagger.json
Normal file
457
static/swagger.json
Normal file
|
@ -0,0 +1,457 @@
|
|||
{
|
||||
"openapi": "3.0.3",
|
||||
"info": {
|
||||
"title": "BTClock API",
|
||||
"version": "3.0",
|
||||
"description": "BTClock V3 API"
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "/api/"
|
||||
}
|
||||
],
|
||||
"paths": {
|
||||
"/status": {
|
||||
"get": {
|
||||
"tags": ["system"],
|
||||
"summary": "Get current status",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/system_status": {
|
||||
"get": {
|
||||
"tags": ["system"],
|
||||
"summary": "Get system status",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/settings": {
|
||||
"get": {
|
||||
"tags": ["system"],
|
||||
"summary": "Get current settings",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ArrayOfLeds"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"post": {
|
||||
"tags": ["system"],
|
||||
"summary": "Save current settings",
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/Settings"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
},
|
||||
"patch": {
|
||||
"tags": ["system"],
|
||||
"summary": "Save current settings",
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/Settings"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/action/pause": {
|
||||
"get": {
|
||||
"tags": ["timer"],
|
||||
"summary": "Pause screen rotation",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/action/timer_restart": {
|
||||
"get": {
|
||||
"tags": ["timer"],
|
||||
"summary": "Restart screen rotation",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/show/screen/{id}": {
|
||||
"get": {
|
||||
"tags": ["screens"],
|
||||
"summary": "Set screen to show",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "id",
|
||||
"schema": {
|
||||
"type": "integer",
|
||||
"default": 1
|
||||
},
|
||||
"required": true,
|
||||
"description": "ID of screen to show"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/show/text/{text}": {
|
||||
"get": {
|
||||
"tags": ["screens"],
|
||||
"summary": "Set text to show",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "text",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"default": "text"
|
||||
},
|
||||
"required": true,
|
||||
"description": "Text to show"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/show/custom": {
|
||||
"post": {
|
||||
"tags": ["screens"],
|
||||
"summary": "Set text to show (advanced)",
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/CustomText"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/full_refresh": {
|
||||
"get": {
|
||||
"tags": ["system"],
|
||||
"summary": "Force full refresh of all displays",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/lights": {
|
||||
"get": {
|
||||
"tags": ["lights"],
|
||||
"summary": "Get LEDs status",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ArrayOfLeds"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/lights/set": {
|
||||
"patch": {
|
||||
"tags": ["lights"],
|
||||
"summary": "Set individual LEDs",
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ArrayOfLedsInput"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "succesful operation"
|
||||
},
|
||||
"400": {
|
||||
"description": "invalid colors or wrong amount of LEDs"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/lights/color/{color}": {
|
||||
"get": {
|
||||
"tags": ["lights"],
|
||||
"summary": "Turn on LEDs with specific color",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "color",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"default": "FFCC00"
|
||||
},
|
||||
"required": true,
|
||||
"description": "Color in RGB hex"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/lights/off": {
|
||||
"get": {
|
||||
"tags": ["lights"],
|
||||
"summary": "Turn LEDs off",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/restart": {
|
||||
"get": {
|
||||
"tags": ["system"],
|
||||
"summary": "Restart BTClock",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"components": {
|
||||
"schemas": {
|
||||
"RgbColorValues": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"red": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255,
|
||||
"example": 255
|
||||
},
|
||||
"green": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255,
|
||||
"example": 204
|
||||
},
|
||||
"blue": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255,
|
||||
"example": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"RgbColorHex": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hex": {
|
||||
"type": "string",
|
||||
"pattern": "^#(?:[0-9a-fA-F]{3}){1,2}$",
|
||||
"example": "#FFCC00"
|
||||
}
|
||||
}
|
||||
},
|
||||
"RgbColorValueAndHex": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/RgbColorValues"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/RgbColorHex"
|
||||
}
|
||||
]
|
||||
},
|
||||
"RgbColorValueOrHex": {
|
||||
"oneOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/RgbColorValues"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/RgbColorHex"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ArrayOfLeds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/RgbColorValueAndHex"
|
||||
}
|
||||
},
|
||||
"ArrayOfLedsInput": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/RgbColorValueOrHex"
|
||||
}
|
||||
},
|
||||
"Settings": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"fetchEurPrice": {
|
||||
"type": "boolean",
|
||||
"description": "Fetch EUR price instead of USD"
|
||||
},
|
||||
"fgColor": {
|
||||
"type": "string",
|
||||
"default": 16777215,
|
||||
"description": "ePaper foreground (text) color"
|
||||
},
|
||||
"bgColor": {
|
||||
"type": "string",
|
||||
"default": 0,
|
||||
"description": "ePaper background color"
|
||||
},
|
||||
"ledTestOnPower": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Do LED test on power-on"
|
||||
},
|
||||
"ledFlashOnUpd": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Flash LEDs on new block"
|
||||
},
|
||||
"mdnsEnabled": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Enable mDNS"
|
||||
},
|
||||
"otaEnabled": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Enable over-the-air updates"
|
||||
},
|
||||
"stealFocus": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Steal focus on new block"
|
||||
},
|
||||
"mcapBigChar": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Use big characters for market cap screen"
|
||||
},
|
||||
"mempoolInstance": {
|
||||
"type": "string",
|
||||
"default": "mempool.space",
|
||||
"description": "Mempool.space instance to connect to"
|
||||
},
|
||||
"ledBrightness": {
|
||||
"type": "integer",
|
||||
"default": 128,
|
||||
"description": "Brightness of LEDs"
|
||||
},
|
||||
"fullRefreshMin": {
|
||||
"type": "integer",
|
||||
"default": 60,
|
||||
"description": "Full refresh time of ePaper displays in minutes"
|
||||
},
|
||||
"screen[0]": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"screen[1]": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"screen[2]": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"screen[3]": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"screen[4]": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"screen[5]": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"screen[6]": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"tzOffset": {
|
||||
"type": "integer",
|
||||
"default": 60,
|
||||
"description": "Timezone offset in minutes"
|
||||
},
|
||||
"minSecPriceUpd": {
|
||||
"type": "integer",
|
||||
"default": 30,
|
||||
"description": "Minimum time between price updates in seconds"
|
||||
},
|
||||
"timePerScreen": {
|
||||
"type": "integer",
|
||||
"default": 30,
|
||||
"description": "Time between screens when rotating in minutes"
|
||||
},
|
||||
"txPower": {
|
||||
"type": "integer",
|
||||
"description": "WiFi Tx Power"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CustomText": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 7,
|
||||
"maxItems": 7
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue