-
Notifications
You must be signed in to change notification settings - Fork 69
Asyncapi mqtt improvements #898
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
jfallows
merged 13 commits into
aklivity:develop
from
bmaidics:asyncapi_mqtt_improvements
Apr 8, 2024
Merged
Changes from 10 commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
f406557
Implement mqtt user property validation
bmaidics 4d15d06
Payload format invalid
bmaidics 18c0e94
Draft
bmaidics e924432
remove
bmaidics 459bb15
checkpoint
bmaidics b7881e4
Merge remote-tracking branch 'upstream/develop' into asyncapi_mqtt_im…
bmaidics 18b0a20
Final
bmaidics 9c4943f
Fix tests
bmaidics eb95d51
Remove
bmaidics 5c04d42
Fix test
bmaidics 46f556b
Add guard support + review items
bmaidics d342395
Add missing dependency
bmaidics 4132723
No hello
bmaidics File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
269 changes: 269 additions & 0 deletions
269
...in/scripts/io/aklivity/zilla/specs/binding/asyncapi/config/mqtt/streetlight.asyncapi.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,269 @@ | ||
| # | ||
| # Copyright 2021-2023 Aklivity Inc. | ||
| # | ||
| # Aklivity licenses this file to you under the Apache License, | ||
| # version 2.0 (the "License"); you may not use this file except in compliance | ||
| # with the License. You may obtain a copy of the License at: | ||
| # | ||
| # http://www.apache.org/licenses/LICENSE-2.0 | ||
| # | ||
| # Unless required by applicable law or agreed to in writing, software | ||
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
| # License for the specific language governing permissions and limitations | ||
| # under the License. | ||
| # | ||
|
|
||
| asyncapi: 3.0.0 | ||
| info: | ||
| title: Streetlights MQTT 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: | ||
| production: | ||
| host: 'test.mosquitto.org:{port}' | ||
| protocol: mqtt | ||
| description: Test broker | ||
| variables: | ||
| port: | ||
| description: Secure connection (TLS) is available through port 8883. | ||
| default: '1883' | ||
| enum: | ||
| - '1883' | ||
| - '8883' | ||
| security: | ||
| - $ref: '#/components/securitySchemes/apiKey' | ||
| - type: oauth2 | ||
| description: Flows to support OAuth 2.0 | ||
| flows: | ||
| implicit: | ||
| authorizationUrl: 'https://authserver.example/auth' | ||
| availableScopes: | ||
| 'streetlights:on': Ability to switch lights on | ||
| 'streetlights:off': Ability to switch lights off | ||
| 'streetlights:dim': Ability to dim the lights | ||
| password: | ||
| tokenUrl: 'https://authserver.example/token' | ||
| availableScopes: | ||
| 'streetlights:on': Ability to switch lights on | ||
| 'streetlights:off': Ability to switch lights off | ||
| 'streetlights:dim': Ability to dim the lights | ||
| clientCredentials: | ||
| tokenUrl: 'https://authserver.example/token' | ||
| availableScopes: | ||
| 'streetlights:on': Ability to switch lights on | ||
| 'streetlights:off': Ability to switch lights off | ||
| 'streetlights:dim': Ability to dim the lights | ||
| authorizationCode: | ||
| authorizationUrl: 'https://authserver.example/auth' | ||
| tokenUrl: 'https://authserver.example/token' | ||
| refreshUrl: 'https://authserver.example/refresh' | ||
| availableScopes: | ||
| 'streetlights:on': Ability to switch lights on | ||
| 'streetlights:off': Ability to switch lights off | ||
| 'streetlights:dim': Ability to dim the lights | ||
| scopes: | ||
| - 'streetlights:on' | ||
| - 'streetlights:off' | ||
| - 'streetlights:dim' | ||
| - $ref: '#/components/securitySchemes/openIdConnectWellKnown' | ||
| tags: | ||
| - name: 'env:production' | ||
| description: This environment is meant for production use case | ||
| - name: 'kind:remote' | ||
| description: This server is a remote server. Not exposed by the application | ||
| - name: 'visibility:public' | ||
| description: This resource is public and available to everyone | ||
| 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. | ||
| parameters: | ||
| streetlightId: | ||
| $ref: '#/components/parameters/streetlightId' | ||
| lightTurnOn: | ||
| address: 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/on' | ||
| messages: | ||
| turnOn: | ||
| $ref: '#/components/messages/turnOnOff' | ||
| parameters: | ||
| streetlightId: | ||
| $ref: '#/components/parameters/streetlightId' | ||
| lightTurnOff: | ||
| address: 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/off' | ||
| messages: | ||
| turnOff: | ||
| $ref: '#/components/messages/turnOnOff' | ||
| parameters: | ||
| streetlightId: | ||
| $ref: '#/components/parameters/streetlightId' | ||
| lightsDim: | ||
| address: 'smartylighting/streetlights/1/0/action/{streetlightId}/dim' | ||
| messages: | ||
| dimLight: | ||
| $ref: '#/components/messages/dimLight' | ||
| 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/mqtt' | ||
| messages: | ||
| - $ref: '#/channels/lightingMeasured/messages/lightMeasured' | ||
| turnOn: | ||
| action: send | ||
| channel: | ||
| $ref: '#/channels/lightTurnOn' | ||
| traits: | ||
| - $ref: '#/components/operationTraits/mqtt' | ||
| messages: | ||
| - $ref: '#/channels/lightTurnOn/messages/turnOn' | ||
| turnOff: | ||
| action: send | ||
| channel: | ||
| $ref: '#/channels/lightTurnOff' | ||
| traits: | ||
| - $ref: '#/components/operationTraits/mqtt' | ||
| messages: | ||
| - $ref: '#/channels/lightTurnOff/messages/turnOff' | ||
| dimLight: | ||
| action: send | ||
| channel: | ||
| $ref: '#/channels/lightsDim' | ||
| traits: | ||
| - $ref: '#/components/operationTraits/mqtt' | ||
| 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: | ||
| apiKey: | ||
| type: apiKey | ||
| in: user | ||
| description: Provide your API key as the user and leave the password empty. | ||
| supportedOauthFlows: | ||
| type: oauth2 | ||
| description: Flows to support OAuth 2.0 | ||
| flows: | ||
| implicit: | ||
| authorizationUrl: 'https://authserver.example/auth' | ||
| availableScopes: | ||
| 'streetlights:on': Ability to switch lights on | ||
| 'streetlights:off': Ability to switch lights off | ||
| 'streetlights:dim': Ability to dim the lights | ||
| password: | ||
| tokenUrl: 'https://authserver.example/token' | ||
| availableScopes: | ||
| 'streetlights:on': Ability to switch lights on | ||
| 'streetlights:off': Ability to switch lights off | ||
| 'streetlights:dim': Ability to dim the lights | ||
| clientCredentials: | ||
| tokenUrl: 'https://authserver.example/token' | ||
| availableScopes: | ||
| 'streetlights:on': Ability to switch lights on | ||
| 'streetlights:off': Ability to switch lights off | ||
| 'streetlights:dim': Ability to dim the lights | ||
| authorizationCode: | ||
| authorizationUrl: 'https://authserver.example/auth' | ||
| tokenUrl: 'https://authserver.example/token' | ||
| refreshUrl: 'https://authserver.example/refresh' | ||
| availableScopes: | ||
| 'streetlights:on': Ability to switch lights on | ||
| 'streetlights:off': Ability to switch lights off | ||
| 'streetlights:dim': Ability to dim the lights | ||
| openIdConnectWellKnown: | ||
| type: openIdConnect | ||
| openIdConnectUrl: 'https://authserver.example/.well-known' | ||
| parameters: | ||
| streetlightId: | ||
| description: The ID of the streetlight. | ||
| messageTraits: | ||
| commonHeaders: | ||
| headers: | ||
| type: object | ||
| properties: | ||
| my-app-header: | ||
| type: integer | ||
| minimum: 0 | ||
| maximum: 100 | ||
| operationTraits: | ||
| mqtt: | ||
| bindings: | ||
| mqtt: | ||
| qos: 1 |
26 changes: 26 additions & 0 deletions
26
...main/scripts/io/aklivity/zilla/specs/binding/asyncapi/config/server.mqtt.streetlight.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| # | ||
| # Copyright 2021-2023 Aklivity Inc. | ||
| # | ||
| # Aklivity licenses this file to you under the Apache License, | ||
| # version 2.0 (the "License"); you may not use this file except in compliance | ||
| # with the License. You may obtain a copy of the License at: | ||
| # | ||
| # http://www.apache.org/licenses/LICENSE-2.0 | ||
| # | ||
| # Unless required by applicable law or agreed to in writing, software | ||
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
| # License for the specific language governing permissions and limitations | ||
| # under the License. | ||
| # | ||
|
|
||
| --- | ||
| name: test | ||
| bindings: | ||
| composite0: | ||
| type: asyncapi | ||
| kind: server | ||
| options: | ||
| specs: | ||
| mqtt_api: mqtt/streetlight.asyncapi.yaml | ||
| exit: asyncapi0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.