mirror of
https://github.com/LukeHagar/redocly-cli.git
synced 2025-12-06 04:21:09 +00:00
241 lines
7.5 KiB
YAML
241 lines
7.5 KiB
YAML
asyncapi: 3.0.0
|
|
info:
|
|
title: Streetlights Kafka API
|
|
version: 1.0.0
|
|
description: "The Smartylighting Streetlights API allows you to remotely manage the city lights.\n\n### Check out its awesome features:\n\n* Turn a specific streetlight on/off \U0001F303\n* Dim a specific streetlight \U0001F60E\n* Receive real-time information about environmental lighting conditions \U0001F4C8\n"
|
|
license:
|
|
name: Apache 2.0
|
|
url: 'https://www.apache.org/licenses/LICENSE-2.0'
|
|
defaultContentType: application/json
|
|
servers:
|
|
test:
|
|
host: 'test.mykafkacluster.org:8092'
|
|
protocol: kafka-secure
|
|
description: Test broker
|
|
security:
|
|
- $ref: '#/components/securitySchemes/saslScram'
|
|
test_oauth:
|
|
host: 'test.mykafkacluster.org:8093'
|
|
protocol: kafka-secure
|
|
description: Test port for oauth
|
|
security:
|
|
- type: oauth2
|
|
description: The oauth security descriptions
|
|
flows:
|
|
clientCredentials:
|
|
tokenUrl: 'https://example.com/api/oauth/dialog'
|
|
availableScopes:
|
|
'streetlights:read': Scope required for subscribing to channel
|
|
'streetlights:write': Scope required for publishing to channel
|
|
scopes:
|
|
- 'streetlights:write'
|
|
- 'streetlights:read'
|
|
channels:
|
|
lightingMeasured:
|
|
address: 'smartylighting.streetlights.1.0.event.{streetlightId}.lighting.measured'
|
|
messages:
|
|
lightMeasured:
|
|
$ref: '#/components/messages/lightMeasured'
|
|
description: The topic on which measured values may be produced and consumed.
|
|
servers:
|
|
- $ref: '#/servers/test'
|
|
parameters:
|
|
streetlightId:
|
|
$ref: '#/components/parameters/streetlightId'
|
|
lightTurnOn:
|
|
address: 'smartylighting.streetlights.1.0.action.{streetlightId}.turn.on'
|
|
messages:
|
|
turnOn:
|
|
$ref: '#/components/messages/turnOnOff'
|
|
servers:
|
|
- $ref: '#/servers/test_oauth'
|
|
parameters:
|
|
streetlightId:
|
|
$ref: '#/components/parameters/streetlightId'
|
|
lightTurnOff:
|
|
address: 'smartylighting.streetlights.1.0.action.{streetlightId}.turn.off'
|
|
messages:
|
|
turnOff:
|
|
$ref: '#/components/messages/turnOnOff'
|
|
servers:
|
|
- $ref: '#/servers/test_oauth'
|
|
parameters:
|
|
streetlightId:
|
|
$ref: '#/components/parameters/streetlightId'
|
|
lightsDim:
|
|
address: 'smartylighting.streetlights.1.0.action.{streetlightId}.dim'
|
|
messages:
|
|
dimLight:
|
|
$ref: '#/components/messages/dimLight'
|
|
servers:
|
|
- $ref: '#/servers/test_oauth'
|
|
parameters:
|
|
streetlightId:
|
|
$ref: '#/components/parameters/streetlightId'
|
|
operations:
|
|
receiveLightMeasurement:
|
|
action: receive
|
|
channel:
|
|
$ref: '#/channels/lightingMeasured'
|
|
summary: >-
|
|
Inform about environmental lighting conditions of a particular
|
|
streetlight.
|
|
traits:
|
|
- $ref: '#/components/operationTraits/kafka'
|
|
messages:
|
|
- $ref: '#/channels/lightingMeasured/messages/lightMeasured'
|
|
turnOn:
|
|
action: send
|
|
channel:
|
|
$ref: '#/channels/lightTurnOn'
|
|
security:
|
|
- type: oauth2
|
|
description: The oauth security descriptions
|
|
flows:
|
|
clientCredentials:
|
|
tokenUrl: 'https://example.com/api/oauth/dialog'
|
|
availableScopes:
|
|
'streetlights:read': Scope required for subscribing to channel
|
|
'streetlights:write': Scope required for publishing to channel
|
|
scopes:
|
|
- 'streetlights:read'
|
|
traits:
|
|
- $ref: '#/components/operationTraits/kafka'
|
|
messages:
|
|
- $ref: '#/channels/lightTurnOn/messages/turnOn'
|
|
turnOff:
|
|
action: send
|
|
channel:
|
|
$ref: '#/channels/lightTurnOff'
|
|
security:
|
|
- type: oauth2
|
|
description: The oauth security descriptions
|
|
flows:
|
|
clientCredentials:
|
|
tokenUrl: 'https://example.com/api/oauth/dialog'
|
|
availableScopes:
|
|
'streetlights:read': Scope required for subscribing to channel
|
|
'streetlights:write': Scope required for publishing to channel
|
|
scopes:
|
|
- 'streetlights:read'
|
|
traits:
|
|
- $ref: '#/components/operationTraits/kafka'
|
|
messages:
|
|
- $ref: '#/channels/lightTurnOff/messages/turnOff'
|
|
dimLight:
|
|
action: send
|
|
channel:
|
|
$ref: '#/channels/lightsDim'
|
|
security:
|
|
- type: oauth2
|
|
description: The oauth security descriptions
|
|
flows:
|
|
clientCredentials:
|
|
tokenUrl: 'https://example.com/api/oauth/dialog'
|
|
availableScopes:
|
|
'streetlights:read': Scope required for subscribing to channel
|
|
'streetlights:write': Scope required for publishing to channel
|
|
scopes:
|
|
- 'streetlights:read'
|
|
traits:
|
|
- $ref: '#/components/operationTraits/kafka'
|
|
messages:
|
|
- $ref: '#/channels/lightsDim/messages/dimLight'
|
|
components:
|
|
messages:
|
|
lightMeasured:
|
|
name: lightMeasured
|
|
title: Light measured
|
|
summary: >-
|
|
Inform about environmental lighting conditions of a particular
|
|
streetlight.
|
|
contentType: application/json
|
|
traits:
|
|
- $ref: '#/components/messageTraits/commonHeaders'
|
|
payload:
|
|
$ref: '#/components/schemas/lightMeasuredPayload'
|
|
turnOnOff:
|
|
name: turnOnOff
|
|
title: Turn on/off
|
|
summary: Command a particular streetlight to turn the lights on or off.
|
|
traits:
|
|
- $ref: '#/components/messageTraits/commonHeaders'
|
|
payload:
|
|
$ref: '#/components/schemas/turnOnOffPayload'
|
|
dimLight:
|
|
name: dimLight
|
|
title: Dim light
|
|
summary: Command a particular streetlight to dim the lights.
|
|
traits:
|
|
- $ref: '#/components/messageTraits/commonHeaders'
|
|
payload:
|
|
$ref: '#/components/schemas/dimLightPayload'
|
|
schemas:
|
|
lightMeasuredPayload:
|
|
type: object
|
|
properties:
|
|
lumens:
|
|
type: integer
|
|
minimum: 0
|
|
description: Light intensity measured in lumens.
|
|
sentAt:
|
|
$ref: '#/components/schemas/sentAt'
|
|
turnOnOffPayload:
|
|
type: object
|
|
properties:
|
|
command:
|
|
type: string
|
|
enum:
|
|
- 'on'
|
|
- 'off'
|
|
description: Whether to turn on or off the light.
|
|
sentAt:
|
|
$ref: '#/components/schemas/sentAt'
|
|
dimLightPayload:
|
|
type: object
|
|
properties:
|
|
percentage:
|
|
type: integer
|
|
description: Percentage to which the light should be dimmed to.
|
|
minimum: 0
|
|
maximum: 100
|
|
sentAt:
|
|
$ref: '#/components/schemas/sentAt'
|
|
sentAt:
|
|
type: string
|
|
format: date-time
|
|
description: Date and time when the message was sent.
|
|
securitySchemes:
|
|
saslScram:
|
|
type: scramSha256
|
|
description: Provide your username and password for SASL/SCRAM authentication
|
|
streetlights_auth:
|
|
type: oauth2
|
|
description: The oauth security descriptions
|
|
flows:
|
|
clientCredentials:
|
|
tokenUrl: 'https://example.com/api/oauth/dialog'
|
|
availableScopes:
|
|
'streetlights:read': Scope required for subscribing to channel
|
|
'streetlights:write': Scope required for publishing to channel
|
|
parameters:
|
|
streetlightId:
|
|
description: The ID of the streetlight.
|
|
messageTraits:
|
|
commonHeaders:
|
|
headers:
|
|
type: object
|
|
properties:
|
|
my-app-header:
|
|
type: integer
|
|
minimum: 0
|
|
maximum: 100
|
|
operationTraits:
|
|
kafka:
|
|
bindings:
|
|
kafka:
|
|
clientId:
|
|
type: string
|
|
enum:
|
|
- my-app-id
|