316 lines
7.5 KiB
YAML
316 lines
7.5 KiB
YAML
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
|