mycroft-core/doc/mycroft-core-api.yaml

977 lines
24 KiB
YAML
Raw Normal View History

swagger: '2.0'
info:
description: API used to communicate with Mycroft backend
version: '1'
title: Mycroft API
host: api.mycroft.ai
basePath: /v1
tags:
- name: device
description: Operations about device
schemes:
- https
paths:
/auth/token:
get:
tags:
- device
summary: Gets a fresh login session from a refresh token
operationId: getRefreshToken
responses:
'200':
description: Login entity
schema:
$ref: '#/definitions/Login'
security:
- refresh_auth:
- 'refresh:token'
/device:
post:
tags:
- device
summary: Creates a device
operationId: createDevice
consumes:
- application/json
parameters:
- in: body
name: body
description: Device to be stored
required: true
schema:
$ref: '#/definitions/Device'
responses:
'200':
description: OK
security:
- device_auth:
- 'write:device'
- 'read:device'
put:
tags:
- device
summary: Updates an existent device
operationId: updateDevice
consumes:
- application/json
parameters:
- in: body
name: body
description: Device to be updated
required: true
schema:
$ref: '#/definitions/Device'
responses:
'200':
description: OK
security:
- device_auth:
- 'write:device'
- 'read:device'
/device/code:
get:
tags:
- device
summary: >-
Generates a pairing code and associates with the state string passed as
parameter
operationId: generatePairingCode
parameters:
- name: state
in: query
description: random string to be associated with pairing code
required: true
type: string
responses:
'200':
description: device pairing entity
schema:
$ref: '#/definitions/DevicePairing'
/device/activate:
post:
tags:
- device
summary: Activates a paired device
operationId: activateDevice
parameters:
- name: body
in: body
description: Device activation payload
required: true
schema:
$ref: '#/definitions/DeviceActivation'
responses:
'200':
description: OK
'/device/{uuid}':
get:
tags:
- device
summary: Finds device by uuid
operationId: findDeviceByUuid
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: Device entity
schema:
$ref: '#/definitions/Device'
'404':
description: Device not found
parameters:
- name: uuid
in: path
type: string
format: uuid
required: true
security:
- device_auth:
- 'write:device'
- 'read:device'
patch:
tags:
- device
summary: Performs a partial update over a device
operationId: updateDevicePartial
consumes:
- application/json
parameters:
- name: uuid
description: Device uuid to update
in: path
type: string
format: uuid
required: true
- in: body
name: body
description: >-
Device to be updated. Only needs pass the fields that need be
changed
required: true
schema:
$ref: '#/definitions/Device'
responses:
'200':
description: OK
'404':
description: Device not found
'422':
description: Found validations error
security:
- device_auth:
- 'write:device'
- 'read:device'
delete:
tags:
- device
summary: Deletes a device
operationId: deleteDeviceByUuid
parameters:
- name: uuid
description: Device uuid to delete
in: path
type: string
format: uuid
required: true
responses:
'200':
description: OK
'404':
description: Device not found
security:
- device_auth:
- 'write:device'
- 'read:device'
'/device/{uuid}/setting':
get:
tags:
- device
summary: Finds the setting from a device
operationId: findDeviceSetting
parameters:
- name: uuid
description: Device uuid to find the setting
in: path
type: string
format: uuid
required: true
- name: If-None-Match
description: Etag for the device setting
in: header
type: string
required: false
responses:
'200':
description: Setting entity
schema:
$ref: '#/definitions/Setting'
security:
- device_auth:
- 'write:device'
- 'read:device'
'/device/{uuid}/subscription':
get:
tags:
- device
summary: Finds the subscription of the user associated with the device
operationId: findDeviceSubscription
parameters:
- name: uuid
description: Device uuid
in: path
type: string
format: uuid
required: true
responses:
'200':
description: Account entity
schema:
$ref: '#/definitions/Account'
security:
- device_auth:
- 'write:device'
- 'read:device'
'/device/{uuid}/location':
get:
tags:
- device
summary: Finds the device location
operationId: findDeviceLocation
parameters:
- name: uuid
description: Device uuid to find the location
in: path
type: string
format: uuid
required: true
- name: If-None-Match
description: Etag for the device location
in: header
type: string
required: false
responses:
'200':
description: OK
schema:
$ref: '#/definitions/Location'
security:
- device_auth:
- 'write:device'
- 'read:device'
'/device/{uuid}/skill':
get:
tags:
- device
summary: Finds all skill associated with a device
operationId: findDeviceSkills
parameters:
- name: uuid
description: Device uuid to find the skill
in: path
type: string
format: uuid
required: true
- name: If-None-Match
description: Etag for the device skill
in: header
type: string
required: false
responses:
'200':
description: Skills associated with the device
schema:
type: array
items:
$ref: '#/definitions/Skill'
security:
- device_auth:
- 'write:device'
- 'read:device'
delete:
tags:
- device
summary: Deletes a skill from a device
operationId: deleteDeviceSkill
parameters:
- name: uuid
description: Device uuid to delete the skill
in: path
type: string
format: uuid
required: true
- name: body
description: Skill to remove from the device
in: body
required: true
schema:
$ref: '#/definitions/Skill'
responses:
'200':
description: OK
'404':
description: Device not found
security:
- device_auth:
- 'write:device'
- 'read:device'
put:
tags:
- device
summary: Creates or updates a skill from a device
operationId: createUpdateDeviceSkill
parameters:
- name: uuid
description: Device uuid to create the skill
in: path
type: string
format: uuid
required: true
- name: body
description: Skill to upload and associate with a device
in: body
required: true
schema:
$ref: '#/definitions/Skill'
responses:
'200':
description: OK
security:
- device_auth:
- 'write:device'
- 'read:device'
'/device/{uuid}/skillJson':
put:
tags:
- device
summary: Updates the skill json associated with the device
operationId: uptDeviceSkillJson
parameters:
- name: uuid
description: Device uuid to find the skill
in: path
type: string
format: uuid
required: true
- name: body
description: skills.json file
in: body
required: true
schema:
$ref: '#/definitions/SkillJson'
responses:
'200':
description: ok
security:
- device_auth:
- 'write:device'
- 'read:device'
'/device/{uuid}/voice':
get:
tags:
- device
summary: Finds a link to download a premium voice if user has a paid account
operationId: getPremiumVoiceLink
parameters:
- name: uuid
description: Device uuid to fetch the premium voice link
in: path
type: string
format: uuid
required: true
- name: arch
description: Architecture to fetch the voice link
in: query
type: string
enum:
- arm
- x86_64
required: true
responses:
'200':
description: OK
security:
- device_auth:
- 'write:device'
- 'read:device'
'/device/{uuid}/metric':
post:
tags:
- device
summary: Pushes the metric passed as body to a metrics service
operationId: sendMetric
parameters:
- name: uuid
description: Device uuid that is sending the metric
in: path
type: string
format: uuid
required: true
responses:
'200':
description: OK
security:
- device_auth:
- 'write:device'
- 'read:device'
'/device/{uuid}/message':
put:
tags:
- device
summary: Sends an email to the user associated with the device
operationId: sendEmail
parameters:
- name: uuid
description: Device uuid that is sending the email
in: path
type: string
format: uuid
required: true
- name: body
in: body
description: payload with data to send the email
required: true
schema:
$ref: '#/definitions/SendEmail'
responses:
'200':
description: OK
security:
- device_auth:
- 'write:device'
- 'read:device'
'/device/{uuid}/userSkill':
get:
tags:
- device
summary: >-
For a given device, fetch all skills with a given identifier associated
with the user linked to the device
operationId: getUserSkillsByIdentifier
parameters:
- name: uuid
description: Device uuid
in: path
type: string
format: uuid
required: true
- name: identifier
description: Skill identifier
in: query
type: string
required: true
- name: If-None-Match
description: Etag for the user skills
in: header
type: string
required: false
responses:
'200':
description: OK
schema:
type: array
items:
$ref: '#/definitions/Skill'
security:
- device_auth:
- 'write:device'
- 'read:device'
securityDefinitions:
user_auth:
type: oauth2
authorizationUrl: 'https://api.mycroft.ai/v1/auth/login'
flow: implicit
scopes:
'write:user': modify user and entities associated with user
'read:user': read user and entities associated with user
device_auth:
type: oauth2
authorizationUrl: 'https://apy.mycroft.ai/v1/device/activate'
flow: implicit
scopes:
'write:device': modify device and entities associated with device
'read:device': read device and entities associated with device
refresh_auth:
type: oauth2
authorizationUrl: 'https://api.mycroft.ai/v1/auth/login'
flow: implicit
scopes:
'refresh:token': get a new fresh token
basic_auth:
type: basic
definitions:
Account:
type: object
properties:
uuid:
type: string
format: uuid
description: Entity id generated by application
PaidAccount:
allOf:
- $ref: '#/definitions/Account'
- type: object
properties:
'@type':
type: string
enum:
- monthly
- yearly
expiratesAt:
type: number
format: int64
description: timestamp in milliseconds when the account expirates
nextPayment:
type: number
format: int64
description: timestamp in millisecond of the next payment
lastPayment:
type: number
format: int64
description: timestamp in milliseconds of the last payment
FreeAccount:
allOf:
- $ref: '#/definitions/Account'
- type: object
properties:
'@type':
type: string
enum:
- free
Device:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
name:
type: string
description:
type: string
coreVersion:
type: string
enclosureVerion:
type: string
setting:
$ref: '#/definitions/Setting'
location:
$ref: '#/definitions/Location'
lastAccess:
type: number
format: int64
Setting:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
device:
$ref: '#/definitions/Device'
systemUnit:
type: string
enum:
- metric
- imperial
timeFormat:
type: string
enum:
- half
- full
dateFormat:
type: string
enum:
- DMY
- MDY
sttSettings:
type: array
items:
$ref: '#/definitions/STTSetting'
ttsSettings:
type: array
items:
$ref: '#/definitions/TTSSetting'
skillSetting:
$ref: '#/definitions/SkillsSetting'
listenerSetting:
$ref: '#/definitions/ListenerSetting'
enclosureSetting:
$ref: '#/definitions/EnclosureSetting'
optIn:
type: boolean
description: flag to store if user agrees in share his voice data with mycroft
STTSetting:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
'@type':
type: string
enum:
- mycroft
- google
- openstt
- ibm
- wit
active:
type: boolean
credential:
$ref: '#/definitions/Credential'
TTSSetting:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
'@type':
type: string
enum:
- mimic
- espeak
- google
- marytts
- fatts
activate:
type: boolean
voice:
type: string
Credential:
type: object
properties:
'@type':
type: string
enum:
- basic
- token
SkillsSetting:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
directory:
type: string
stopThreshold:
type: number
format: double
ListenerSetting:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
sampleRate:
type: number
format: int
enum:
- 8000
- 16000
channels:
type: number
format: int
enum:
- 1
- 2
wakeWord:
type: string
phonemes:
type: string
threshold:
type: number
format: double
multiplier:
type: number
format: double
energyRatio:
type: number
format: double
EnclosureSetting:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
path:
type: string
rate:
type: number
format: int32
enum:
- 9600
timeout:
type: number
format: double
Location:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
coordinate:
$ref: '#/definitions/Coordinate'
timezone:
$ref: '#/definitions/Timezone'
city:
$ref: '#/definitions/City'
Coordinate:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
latitude:
type: number
format: double
minimum: -90
maximum: 90
longitude:
type: number
format: double
minimum: -180
maximum: 180
Timezone:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
code:
type: string
description: >-
The UTC timezone code represented such as: UTC-N, UTC, UTC+M. Where N
is in between [01:00, 12:00] and M is in between [01:00, 14:00]
name:
type: string
offset:
type: number
format: int32
description: The UTC timezone offset in milliseconds
dstOffset:
type: number
format: int32
description: The UTC daylight saving offset in milliseconds
City:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
code:
type: string
name:
type: string
state:
$ref: '#/definitions/State'
State:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
code:
type: string
name:
type: string
country:
$ref: '#/definitions/Country'
Country:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
code:
type: string
name:
type: string
Skill:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
name:
type: string
description:
type: string
contributor:
type: string
icon:
type: string
identifier:
type: string
skillMetadata:
$ref: '#/definitions/SkillMetadata'
SkillMetadata:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
sections:
type: array
items:
$ref: '#/definitions/SkillMetadataSection'
SkillMetadataSection:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
name:
type: string
fields:
type: array
items:
$ref: '#/definitions/SkillMetadataField'
SkillMetadataField:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
name:
type: string
type:
type: string
label:
type: string
hint:
type: string
placeholder:
type: string
value:
type: string
SkillJson:
type: object
properties:
blacklist:
type: array
items:
type: string
skills:
type: array
items:
$ref: '#/definitions/SkillManifest'
SkillManifest:
type: object
properties:
uuid:
type: string
format: uuid
description: entity id generated by application
name:
type: string
description: skill's name
origin:
type: string
description: >-
"default" means the skill was installed when found on the
DEFAULT-SKILLS list; "marketplace" means the skill was installed from
a user action on a remote UI; "voice" means the skill was installed
from a device via voice; "cli" means the skill was installed from a
device via MSM command line; "non-msm" means the skill just appeared,
e.g. FTP, git or created on device
installation:
type: string
description: >-
This holds the installation status of the skill. It can be one
of:"installed" fully installed; "installing" in the process of being
installed (transitory state) "uninstalling" in the process of removal
(transitory state); "failed" means an attempt was made to install the
skill but it failed
failure_message:
type: string
description: 'Optional error message, only meaningful when installation = "failed"'
status:
type: string
description: >-
"active" the normal state; "disabled" the user has temporarily
disabled this skill; "error" the skill failed to load
beta:
type: string
description: >-
True if running at the repo HEAD, otherwise running the registered
version This only has meaning for "remote" or "local" skills.
installed:
type: number
format: int64
description: >-
A simple UTC date/time of when the skill was created on the local
system
updated:
type: number
description: Last time the skill was updated from its source repo
SendEmail:
type: object
properties:
title:
type: string
body:
type: string
description: HTML message to be sent as body
sender:
type: string
description: skill that is sending the message
DevicePairing:
type: object
properties:
code:
type: string
state:
type: string
token:
type: string
expiration:
type: number
format: int64
description: pairing code expiration time in milliseconds
DeviceActivation:
type: object
properties:
state:
type: string
token:
type: string
coreVersion:
type: string
enclosureVersion:
type: string
Login:
type: object
properties:
uuid:
type: string
format: uuid
description: User uuid
accessToken:
type: string
description: User access token
refreshToken:
type: string
description: Token used to renew access and get a fresh token
expiration:
type: string
description: Token expiration time in milliseconds
externalDocs:
description: Find out more about Swagger
url: 'http://swagger.io'