asyncapi: 3.0.0 info: title: Correlation ID Example version: 1.0.0 description: A cut of the Streetlights API to test Correlation ID 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' channels: lightingMeasured: address: 'smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured' messages: lightMeasured: $ref: '#/components/messages/lightMeasured' 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. messages: - $ref: '#/channels/lightingMeasured/messages/lightMeasured' dimLight: action: send channel: $ref: '#/channels/lightsDim' messages: - $ref: '#/channels/lightsDim/messages/dimLight' components: messages: lightMeasured: name: lightMeasured title: Light measured summary: >- Inform about environmental lighting conditions of a particular streetlight. correlationId: location: $message.header#/MQMD/CorrelId contentType: application/json payload: $ref: '#/components/schemas/lightMeasuredPayload' dimLight: name: dimLight title: Dim light summary: Command a particular streetlight to dim the lights. correlationId: $ref: '#/components/correlationIds/sentAtCorrelator' 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' 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. parameters: streetlightId: description: The ID of the streetlight. correlationIds: sentAtCorrelator: description: Data from message payload used as correlation ID location: $message.payload#/sentAt 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'