openapi: 3.0.0 info: title: API documentation example version: 0.0.1 servers: - url: "{server}/v1" variables: server: default: https://exampleHost.com tags: - description: API operations for accessing devices name: devices paths: /devices/{device_id}: get: description: Get a device operationId: get_device parameters: - schema: description: Device Id example: 5 type: integer description: Device Id in: path name: device_id required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Device' description: Success summary: Get a device tags: - devices /devices: get: description: Returns a list of devices operationId: list_devices responses: "200": content: application/json: schema: $ref: '#/components/schemas/DeviceCollection' description: Success summary: Get all devices tags: - devices post: description: "Creates a device" operationId: create_device requestBody: content: application/json: schema: $ref: '#/components/schemas/DevicePrototype' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/Device' description: Created a new devices summary: Create a device tags: - devices components: schemas: DeviceCollection: description: list of devices example: devices: - id: 5 details: device_config: input_parameters: param1: "23" parameters: - value: Office1 key: location properties: devices: description: array of devices items: $ref: '#/components/schemas/Device' maxItems: 10000 minItems: 0 type: array required: - devices type: object Device: description: device example: details: device_config: input_parameters: param1: "23" parameters: - value: Office1 key: location id: 5 created_on: 1718781462 properties: id: description: the id of the device example: 5 type: integer created_on: description: creation time example: 1718781462 type: integer details: $ref: '#/components/schemas/DeviceDetails' title: device type: object DevicePrototype: description: device prototype example: details: device_config: input_parameters: param1: "23" parameters: - value: "office1" key: location id: 5 properties: id: description: device id example: 1 type: integer details: $ref: '#/components/schemas/DeviceDetails' type: object DeviceDetails: description: Details of the device example: device_config: input_parameters: param1: "23" parameters: - value: Office1 key: location properties: device_config: $ref: '#/components/schemas/DeviceConfiguration' parameters: description: device details parameters items: $ref: '#/components/schemas/DeviceDetailItem' maxItems: 10000 minItems: 0 type: array type: object DeviceDetailItem: description: Key value object example: value: office1 key: location properties: key: description: key of the device property example: location maxLength: 128 minLength: 1 pattern: "^[a-zA-Z0-9\\-_.]+$" type: string value: description: Value of the device property example: office1 maxLength: 128 minLength: 1 pattern: "^[a-zA-Z0-9\\-]+$" type: string required: - key type: object DeviceConfiguration: description: Configuration of the device. example: input_parameters: param1: "23" properties: input_parameters: additionalProperties: $ref: '#/components/schemas/ParameterValue' description: Dictionary of parameters. Keys are unique strings that identify the parameters. type: object type: object ParameterValue: description: Value of the parameter example: "23" maxLength: 250 minLength: 1 pattern: ^.+$ type: string