344 lines
9.0 KiB
YAML
344 lines
9.0 KiB
YAML
swagger: '2.0'
|
|
info:
|
|
title: Mainflux twins service
|
|
description: HTTP API for managing digital twins and their states.
|
|
version: '1.0.0'
|
|
consumes:
|
|
- 'application/json'
|
|
produces:
|
|
- 'application/json'
|
|
paths:
|
|
/twins:
|
|
post:
|
|
summary: Adds new twin
|
|
description: |
|
|
Adds new twin to the list of twins owned by user identified using
|
|
the provided access token.
|
|
tags:
|
|
- twins
|
|
parameters:
|
|
- $ref: '#/parameters/Authorization'
|
|
- name: twin
|
|
description: JSON-formatted document describing the new twin.
|
|
in: body
|
|
schema:
|
|
$ref: '#/definitions/TwinReq'
|
|
required: true
|
|
responses:
|
|
201:
|
|
description: Twin registered.
|
|
headers:
|
|
Location:
|
|
type: string
|
|
description: Created twin's relative URL (i.e. /twins/{twinID}).
|
|
400:
|
|
description: Failed due to malformed JSON.
|
|
403:
|
|
description: Missing or invalid access token provided.
|
|
415:
|
|
description: Missing or invalid content type.
|
|
500:
|
|
$ref: '#/responses/ServiceError'
|
|
|
|
get:
|
|
summary: Retrieves managed twins
|
|
description: |
|
|
Retrieves a list of managed twins. Due to performance concerns, data
|
|
is retrieved in subsets.
|
|
tags:
|
|
- twins
|
|
parameters:
|
|
- $ref: '#/parameters/Authorization'
|
|
- $ref: '#/parameters/Limit'
|
|
- $ref: '#/parameters/Offset'
|
|
- $ref: '#/parameters/Name'
|
|
- $ref: '#/parameters/Metadata'
|
|
responses:
|
|
200:
|
|
description: Data retrieved.
|
|
schema:
|
|
$ref: '#/definitions/TwinsPage'
|
|
400:
|
|
description: Failed due to malformed query parameters.
|
|
403:
|
|
description: Missing or invalid access token provided.
|
|
500:
|
|
$ref: '#/responses/ServiceError'
|
|
|
|
/twins/{twinID}:
|
|
get:
|
|
summary: Retrieves twin info
|
|
tags:
|
|
- twins
|
|
parameters:
|
|
- $ref: '#/parameters/Authorization'
|
|
- $ref: '#/parameters/TwinID'
|
|
responses:
|
|
200:
|
|
description: Data retrieved.
|
|
schema:
|
|
$ref: '#/definitions/TwinRes'
|
|
400:
|
|
description: Failed due to malformed twin's ID.
|
|
403:
|
|
description: Missing or invalid access token provided.
|
|
404:
|
|
description: Twin does not exist.
|
|
500:
|
|
$ref: '#/responses/ServiceError'
|
|
put:
|
|
summary: Updates twin info
|
|
description: |
|
|
Update is performed by replacing the current resource data with values
|
|
provided in a request payload. Note that the twin's ID cannot be changed.
|
|
tags:
|
|
- twins
|
|
parameters:
|
|
- $ref: '#/parameters/Authorization'
|
|
- $ref: '#/parameters/TwinID'
|
|
- name: twin
|
|
description: JSON-formatted document describing the updated twin.
|
|
in: body
|
|
schema:
|
|
$ref: '#/definitions/TwinReq'
|
|
required: true
|
|
responses:
|
|
200:
|
|
description: Twin updated.
|
|
400:
|
|
description: Failed due to malformed twin's ID or malformed JSON.
|
|
403:
|
|
description: Missing or invalid access token provided.
|
|
404:
|
|
description: Twin does not exist.
|
|
415:
|
|
description: Missing or invalid content type.
|
|
500:
|
|
$ref: '#/responses/ServiceError'
|
|
delete:
|
|
summary: Removes a twin
|
|
description: Removes a twin.
|
|
tags:
|
|
- twins
|
|
parameters:
|
|
- $ref: '#/parameters/Authorization'
|
|
- $ref: '#/parameters/TwinID'
|
|
responses:
|
|
204:
|
|
description: Twin removed.
|
|
400:
|
|
description: Failed due to malformed twin's ID.
|
|
403:
|
|
description: Missing or invalid access token provided
|
|
404:
|
|
description: Twin does not exist.
|
|
500:
|
|
$ref: '#/responses/ServiceError'
|
|
|
|
/states/{twinID}:
|
|
get:
|
|
summary: Retrieves states of twin with id twinID
|
|
description: |
|
|
Retrieves a list of states. Due to performance concerns, data
|
|
is retrieved in subsets.
|
|
tags:
|
|
- states
|
|
parameters:
|
|
- $ref: '#/parameters/TwinID'
|
|
- $ref: '#/parameters/Authorization'
|
|
- $ref: '#/parameters/Limit'
|
|
- $ref: '#/parameters/Offset'
|
|
- $ref: '#/parameters/Metadata'
|
|
responses:
|
|
200:
|
|
description: Data retrieved.
|
|
schema:
|
|
$ref: '#/definitions/StatesPage'
|
|
400:
|
|
description: Failed due to malformed query parameters.
|
|
403:
|
|
description: Missing or invalid access token provided.
|
|
404:
|
|
description: Twin does not exist.
|
|
500:
|
|
$ref: '#/responses/ServiceError'
|
|
|
|
responses:
|
|
ServiceError:
|
|
description: Unexpected server-side error occurred.
|
|
|
|
parameters:
|
|
Authorization:
|
|
name: Authorization
|
|
description: User's access token.
|
|
in: header
|
|
type: string
|
|
required: true
|
|
Limit:
|
|
name: limit
|
|
description: Size of the subset to retrieve.
|
|
in: query
|
|
type: integer
|
|
default: 10
|
|
maximum: 100
|
|
minimum: 1
|
|
required: false
|
|
Offset:
|
|
name: offset
|
|
description: Number of items to skip during retrieval.
|
|
in: query
|
|
type: integer
|
|
default: 0
|
|
minimum: 0
|
|
required: false
|
|
Name:
|
|
name: name
|
|
description: Twin name
|
|
in: query
|
|
type: string
|
|
required: false
|
|
Metadata:
|
|
name: metadata
|
|
description: |
|
|
Metadata filter. Filtering is performed matching the parameter with
|
|
metadata on top level. Parameter is json.
|
|
in: query
|
|
type: string
|
|
minimum: 0
|
|
required: false
|
|
TwinID:
|
|
name: twinID
|
|
description: Unique twin identifier.
|
|
in: path
|
|
type: string
|
|
minimum: 1
|
|
required: true
|
|
|
|
definitions:
|
|
Definition:
|
|
type: object
|
|
properties:
|
|
delta:
|
|
type: number
|
|
description: Minimal time delay before new state creation.
|
|
attributes:
|
|
type: array
|
|
minItems: 0
|
|
uniqueItems: true
|
|
items:
|
|
$ref: '#/definitions/Attribute'
|
|
Attribute:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Name of the attribute.
|
|
channel:
|
|
type: string
|
|
description: Mainflux channel used by attribute.
|
|
subtopic:
|
|
type: string
|
|
description: Subtopic used by attribute.
|
|
persist_state:
|
|
type: boolean
|
|
description: Trigger state creation based on the attribute.
|
|
TwinReq:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Free-form twin name.
|
|
metadata:
|
|
type: object
|
|
description: Arbitrary, object-encoded twin's data.
|
|
definition:
|
|
$ref: '#/definitions/Definition'
|
|
TwinRes:
|
|
type: object
|
|
properties:
|
|
owner:
|
|
type: string
|
|
description: Email address of Mainflux user that owns twin.
|
|
id:
|
|
type: string
|
|
description: Unique twin identifier generated by the service.
|
|
name:
|
|
type: string
|
|
description: Free-form twin name.
|
|
revision:
|
|
type: number
|
|
description: Oridnal revision number of twin.
|
|
created:
|
|
type: string
|
|
format: date
|
|
description: Twin creation date and time.
|
|
updated:
|
|
type: string
|
|
format: date
|
|
description: Twin update date and time.
|
|
definitions:
|
|
type: array
|
|
minItems: 0
|
|
uniqueItems: true
|
|
items:
|
|
$ref: '#/definitions/Definition'
|
|
metadata:
|
|
type: object
|
|
description: Arbitrary, object-encoded twin's data.
|
|
TwinsPage:
|
|
type: object
|
|
properties:
|
|
twins:
|
|
type: array
|
|
minItems: 0
|
|
uniqueItems: true
|
|
items:
|
|
$ref: '#/definitions/TwinRes'
|
|
total:
|
|
type: integer
|
|
description: Total number of items.
|
|
offset:
|
|
type: integer
|
|
description: Number of items to skip during retrieval.
|
|
limit:
|
|
type: integer
|
|
description: Maximum number of items to return in one page.
|
|
required:
|
|
- twins
|
|
StateRes:
|
|
type: object
|
|
properties:
|
|
twin_id:
|
|
type: string
|
|
description: ID of twin state belongs to.
|
|
id:
|
|
type: number
|
|
description: State position in a time row of states.
|
|
created:
|
|
type: string
|
|
format: date
|
|
description: State creation date.
|
|
payload:
|
|
type: object
|
|
description: Object-encoded states's payload.
|
|
StatesPage:
|
|
type: object
|
|
properties:
|
|
twins:
|
|
type: array
|
|
minItems: 0
|
|
uniqueItems: true
|
|
items:
|
|
$ref: '#/definitions/StateRes'
|
|
total:
|
|
type: integer
|
|
description: Total number of items.
|
|
offset:
|
|
type: integer
|
|
description: Number of items to skip during retrieval.
|
|
limit:
|
|
type: integer
|
|
description: Maximum number of items to return in one page.
|
|
required:
|
|
- twins
|