Use YAML for specification

YAML is simpler for human to read/write than JSON,
at least because it is less verbose.
It is also richer as it let describe with comment and have multiline support.
This commit is contained in:
Guilhem Bonnefille 2020-07-29 18:41:47 +02:00
parent f9b3b7c923
commit b317daa072
3 changed files with 183 additions and 209 deletions

View File

@ -5,13 +5,13 @@ download: swagger-codegen-cli.jar
swagger-codegen-cli.jar:
wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.20/swagger-codegen-cli-3.0.20.jar -O swagger-codegen-cli.jar
doc: openkarotz-openapi.json
doc: openkarotz-openapi.yaml
mkdir -p html
java -jar swagger-codegen-cli.jar generate -i openkarotz-openapi.json -l html -o html
java -jar swagger-codegen-cli.jar generate -i openkarotz-openapi.yaml -l html -o html
python: openkarotz-openapi.json
python: openkarotz-openapi.yaml
mkdir -p python
java -jar swagger-codegen-cli.jar generate -i openkarotz-openapi.json -l python -o python -c config-python.json
java -jar swagger-codegen-cli.jar generate -i openkarotz-openapi.yaml -l python -o python -c config-python.json
clean:
rm -rf doc python

View File

@ -1,205 +0,0 @@
{
"openapi":"3.0.3",
"info":{
"title":"OpenKarotz API",
"decription":"Cf. http://www.openkarotz.org/",
"license": {
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
},
"version":"3.10"
},
"paths":{
"/cgi-bin/status":{
"summary":"status",
"description":"Permet dafficher des informations sur le karotz, la réponse est un tableau JSON avec les attributs",
"get":{
"summary":"get status",
"responses":{
"200":{
"description":"la liste des informations sur le karotz",
"content":{
"application/json": {
"schema":{
"type": "object",
"title": "status",
"properties": {
"version": {
"type": "string",
"description":"version des scripts installés"
},
"ears_disabled": {
"type": "integer",
"description":"1 si les oreilles on été désactivées, 0 sinon"
},
"sleep": {
"type": "integer",
"description": "1 si le lapin dors, 0 sinon"
},
"sleep_time": {
"type": "string",
"description":"si le lapin dors, contient un Timestamp de lheure dendormissement."
},
"led_color": {
"type": "string",
"description": "couleur actuelle de la led"
},
"led_pulse": {
"type": "integer",
"description": "1 si le lapin respire, 0 si fixe."
},
"tts_cache_size": {
"type": "integer",
"description": "Nombre de phrase(s) dans le cache TTS."
},
"usb_stick_free_space": {
"oneOf": [
{ "type": "string"},
{ "type": "integer"}
],
"description": "Place libre sur la clé USB (Version lisible)"
},
"karotz_free_Space": {
"oneOf": [
{ "type": "string"},
{ "type": "integer"}
],
"description": "Place libre dans le Karotz (Version lisible)"
},
"eth_mac": {
"type": "string",
"description": "Adresse MAC adaptateur ethernet"
},
"wlan_mac": {
"type": "string",
"description": "Adresse MAC adaptateur WIFI"
},
"nb_tags": {
"type": "integer",
"description": "Nombre de tags enregistrés."
},
"nb_moods": {
"type": "integer",
"description": "Nombre dhumeurs installées."
},
"nb_sounds": {
"type": "integer",
"description": "Nombre de Sons Installés."
},
"nb_stories": {
"type": "integer",
"description": "Nombre dHistoires Installées."
},
"karotz_percent_used_space": {
"type": "integer",
"description": "Espace utilisé dans la mémoire du Karotz"
},
"usb_percent_used_space": {
"oneOf": [
{ "type": "string"},
{ "type": "integer"}
],
"description": "Espace utilisé sur la clef USB"
},
"data_dir": {
"type": "string",
"description": "Emplacement des fichiers de donnés"
}
}
},
"example":{"version":"210","ears_disabled":"0","sleep":"1","sleep_time":"1398086161","led_color":"000000","led_pulse":"0","tts_cache_size":"1","usb_free_space":"-1","karotz_free_space":"144.0M","eth_mac":"00:13:3B:90:97:5D","wlan_mac":"00:0E:8E:2C:93:B2","nb_tags":"14","nb_moods":"305","nb_sounds":"15","nb_stories":"0","karotz_percent_used_space":"38","usb_percent_used_space":"","data_dir":"/usr/openkarotz"}
}
}
}
}
}
},
"/cgi-bin/get_version": {
"summary": "get_version",
"description": "Renvoi les versions des différents composants",
"get": {
"summary": "get version",
"responses": {
"200": {
"description": "Renvoi les versions des différents composants",
"content": {
"application/json": {
"schema":{
"type": "object",
"title": "versions",
"properties": {
"version" : {
"type": "string",
"description": "version des scripts installée."
},
"rootfs_version" : {
"type": "string",
"description": "version du firmware"
},
"patch_version" : {
"type": "string",
"description": "version des patchs installés"
},
"serial" : {
"type": "string",
"description": "Numéro de série du lapin (Unique)"
}
}
},
"example":{"version":"210","rootfs_version":"2.0.r8","patch_version":"213","serial":"61xxxxxxxxx8926xxxxxxxxxx016","return":"0"}
}
}
}
}
}
},
"/cgi-bin/wakeup": {
"summary": "wakeup",
"description": "Permet de réveiller le lapin, si le paramètre silent est utilisé avec la valeur 1 aucun son nest joué.",
"get": {
"summary": "wakeup karotz",
"responses": {
"200": {
"description": "Permet de réveiller le lapin",
"content": {
"application/json": {
"example": {"return":"0","silent":"0"}
}
}
}
}
},
"parameters":[
{
"name": "silent",
"description": "si le paramètre silent est utilisé avec la valeur 1 aucun son nest joué.",
"in": "query",
"required": false,
" allowEmptyValue": false,
"schema": {
"type": "integer"
}
}
]
},
"/cgi-bin/sleep": {
"tags":["state"],
"summary": "sleep",
"description": "Permet d'endormir le lapin.",
"get": {
"summary": "sleep karotz",
"operationId": "sleep",
"responses": {
"200": {
"description": "Permet d'endormir le lapin",
"content": {
"application/json": {
"example": {"return":"0"}
}
}
}
}
}
}
}
}

179
openkarotz-openapi.yaml Normal file
View File

@ -0,0 +1,179 @@
openapi: 3.0.3
info:
title: OpenKarotz API
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
version: "3.10"
servers:
- url: /
paths:
/cgi-bin/status:
summary: status
description: Permet dafficher des informations sur le karotz, la réponse est
un tableau JSON avec les attributs
get:
summary: get status
responses:
"200":
description: la liste des informations sur le karotz
content:
application/json:
schema:
$ref: '#/components/schemas/status'
example:
version: "210"
ears_disabled: "0"
sleep: "1"
sleep_time: "1398086161"
led_color: "000000"
led_pulse: "0"
tts_cache_size: "1"
usb_free_space: -1
karotz_free_space: 144.0M
eth_mac: 00:13:3B:90:97:5D
wlan_mac: 00:0E:8E:2C:93:B2
nb_tags: "14"
nb_moods: "305"
nb_sounds: "15"
nb_stories: "0"
karotz_percent_used_space: "38"
usb_percent_used_space: ""
data_dir: /usr/openkarotz
/cgi-bin/get_version:
summary: get_version
description: Renvoi les versions des différents composants
get:
summary: get version
responses:
"200":
description: Renvoi les versions des différents composants
content:
application/json:
schema:
$ref: '#/components/schemas/versions'
example:
version: "210"
rootfs_version: 2.0.r8
patch_version: "213"
serial: 61xxxxxxxxx8926xxxxxxxxxx016
return: "0"
/cgi-bin/wakeup:
summary: wakeup
description: Permet de réveiller le lapin, si le paramètre silent est utilisé
avec la valeur 1 aucun son nest joué.
get:
summary: wakeup karotz
parameters:
- name: silent
in: query
description: si le paramètre silent est utilisé avec la valeur 1 aucun son
nest joué.
required: false
style: form
explode: true
schema:
type: integer
responses:
"200":
description: Permet de réveiller le lapin
content:
application/json:
example:
return: "0"
silent: "0"
/cgi-bin/sleep:
summary: sleep
description: Permet d'endormir le lapin.
get:
summary: sleep karotz
operationId: sleep
responses:
"200":
description: Permet d'endormir le lapin
content:
application/json:
example:
return: "0"
components:
schemas:
status:
title: status
type: object
properties:
version:
type: string
description: version des scripts installés
ears_disabled:
type: integer
description: 1 si les oreilles on été désactivées, 0 sinon
sleep:
type: integer
description: 1 si le lapin dors, 0 sinon
sleep_time:
type: string
description: si le lapin dors, contient un Timestamp de lheure dendormissement.
led_color:
type: string
description: couleur actuelle de la led
led_pulse:
type: integer
description: 1 si le lapin respire, 0 si fixe.
tts_cache_size:
type: integer
description: Nombre de phrase(s) dans le cache TTS.
usb_stick_free_space:
description: Place libre sur la clé USB (Version lisible)
oneOf:
- type: string
- type: integer
karotz_free_Space:
description: Place libre dans le Karotz (Version lisible)
oneOf:
- type: string
- type: integer
eth_mac:
type: string
description: Adresse MAC adaptateur ethernet
wlan_mac:
type: string
description: Adresse MAC adaptateur WIFI
nb_tags:
type: integer
description: Nombre de tags enregistrés.
nb_moods:
type: integer
description: Nombre dhumeurs installées.
nb_sounds:
type: integer
description: Nombre de Sons Installés.
nb_stories:
type: integer
description: Nombre dHistoires Installées.
karotz_percent_used_space:
type: integer
description: Espace utilisé dans la mémoire du Karotz
usb_percent_used_space:
description: Espace utilisé sur la clef USB
oneOf:
- type: string
- type: integer
data_dir:
type: string
description: Emplacement des fichiers de donnés
versions:
title: versions
type: object
properties:
version:
type: string
description: version des scripts installée.
rootfs_version:
type: string
description: version du firmware
patch_version:
type: string
description: version des patchs installés
serial:
type: string
description: Numéro de série du lapin (Unique)