packages feed

asyncapi3-1.0.0.0: reference/examples/correlation-id-asyncapi.yml

asyncapi: 3.1.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'