asyncapi: 3.0.0
info:
  title: Lumi workspace webhooks
  version: 2.0.0
  description: >-
    Committed idea events sent via HTTPS POST. Identifier-only payloads; Bearer authentication, not HMAC. Four
    total attempts for network/408/429/5xx failures; duplicates and reordering are possible. Subscriptions are
    managed through the REST API.
defaultContentType: application/json
servers:
  receiver:
    host: receiver.example.com
    pathname: /webhooks/lumi
    protocol: https
    security:
      - $ref: '#/components/securitySchemes/webhookBearer'
channels:
  ideas:
    address: /webhooks/lumi
    messages:
      idea.submitted:
        $ref: '#/components/messages/idea.submitted'
      idea.published:
        $ref: '#/components/messages/idea.published'
      idea.status_changed:
        $ref: '#/components/messages/idea.status_changed'
      idea.official_update_added:
        $ref: '#/components/messages/idea.official_update_added'
      idea.comment_added:
        $ref: '#/components/messages/idea.comment_added'
      idea.voted:
        $ref: '#/components/messages/idea.voted'
      idea.followed:
        $ref: '#/components/messages/idea.followed'
operations:
  sendIdeaEvent:
    action: send
    channel:
      $ref: '#/channels/ideas'
    bindings:
      http:
        method: POST
        bindingVersion: 0.3.0
components:
  securitySchemes:
    webhookBearer:
      type: http
      scheme: bearer
      description: 'Authorization: Bearer <whsec_...>. Validate with constant-time comparison before processing.'
  messages:
    idea.submitted:
      name: idea.submitted
      title: idea.submitted
      headers:
        type: object
        required:
          - X-Luma-Event
          - X-Luma-Delivery
        properties:
          X-Luma-Event:
            type: string
            const: idea.submitted
          X-Luma-Delivery:
            type: string
            format: uuid
      payload:
        type: object
        additionalProperties: false
        required:
          - schemaVersion
          - id
          - event
          - orgId
          - occurredAt
          - data
        properties:
          schemaVersion:
            type: string
            const: '2'
          id:
            type: string
            format: uuid
            description: Stable event ID. Deduplicate across retries.
          event:
            type: string
            const: idea.submitted
          orgId:
            type: string
            format: uuid
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            additionalProperties: false
            required:
              - ideaId
            properties:
              ideaId:
                type: string
      examples:
        - payload:
            schemaVersion: '2'
            event: idea.submitted
            id: 00000000-0000-4000-8000-000000000001
            orgId: 00000000-0000-4000-8000-000000000002
            occurredAt: '2026-09-26T09:00:00.000Z'
            data:
              ideaId: 00000000-0000-4000-8000-000000000003
    idea.published:
      name: idea.published
      title: idea.published
      headers:
        type: object
        required:
          - X-Luma-Event
          - X-Luma-Delivery
        properties:
          X-Luma-Event:
            type: string
            const: idea.published
          X-Luma-Delivery:
            type: string
            format: uuid
      payload:
        type: object
        additionalProperties: false
        required:
          - schemaVersion
          - id
          - event
          - orgId
          - occurredAt
          - data
        properties:
          schemaVersion:
            type: string
            const: '2'
          id:
            type: string
            format: uuid
            description: Stable event ID. Deduplicate across retries.
          event:
            type: string
            const: idea.published
          orgId:
            type: string
            format: uuid
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            additionalProperties: false
            required:
              - ideaId
            properties:
              ideaId:
                type: string
      examples:
        - payload:
            schemaVersion: '2'
            event: idea.published
            id: 00000000-0000-4000-8000-000000000001
            orgId: 00000000-0000-4000-8000-000000000002
            occurredAt: '2026-09-26T09:00:00.000Z'
            data:
              ideaId: 00000000-0000-4000-8000-000000000003
    idea.status_changed:
      name: idea.status_changed
      title: idea.status_changed
      headers:
        type: object
        required:
          - X-Luma-Event
          - X-Luma-Delivery
        properties:
          X-Luma-Event:
            type: string
            const: idea.status_changed
          X-Luma-Delivery:
            type: string
            format: uuid
      payload:
        type: object
        additionalProperties: false
        required:
          - schemaVersion
          - id
          - event
          - orgId
          - occurredAt
          - data
        properties:
          schemaVersion:
            type: string
            const: '2'
          id:
            type: string
            format: uuid
            description: Stable event ID. Deduplicate across retries.
          event:
            type: string
            const: idea.status_changed
          orgId:
            type: string
            format: uuid
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            additionalProperties: false
            required:
              - ideaId
            properties:
              ideaId:
                type: string
      examples:
        - payload:
            schemaVersion: '2'
            event: idea.status_changed
            id: 00000000-0000-4000-8000-000000000001
            orgId: 00000000-0000-4000-8000-000000000002
            occurredAt: '2026-09-26T09:00:00.000Z'
            data:
              ideaId: 00000000-0000-4000-8000-000000000003
    idea.official_update_added:
      name: idea.official_update_added
      title: idea.official_update_added
      headers:
        type: object
        required:
          - X-Luma-Event
          - X-Luma-Delivery
        properties:
          X-Luma-Event:
            type: string
            const: idea.official_update_added
          X-Luma-Delivery:
            type: string
            format: uuid
      payload:
        type: object
        additionalProperties: false
        required:
          - schemaVersion
          - id
          - event
          - orgId
          - occurredAt
          - data
        properties:
          schemaVersion:
            type: string
            const: '2'
          id:
            type: string
            format: uuid
            description: Stable event ID. Deduplicate across retries.
          event:
            type: string
            const: idea.official_update_added
          orgId:
            type: string
            format: uuid
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            additionalProperties: false
            required:
              - ideaId
            properties:
              ideaId:
                type: string
      examples:
        - payload:
            schemaVersion: '2'
            event: idea.official_update_added
            id: 00000000-0000-4000-8000-000000000001
            orgId: 00000000-0000-4000-8000-000000000002
            occurredAt: '2026-09-26T09:00:00.000Z'
            data:
              ideaId: 00000000-0000-4000-8000-000000000003
    idea.comment_added:
      name: idea.comment_added
      title: idea.comment_added
      headers:
        type: object
        required:
          - X-Luma-Event
          - X-Luma-Delivery
        properties:
          X-Luma-Event:
            type: string
            const: idea.comment_added
          X-Luma-Delivery:
            type: string
            format: uuid
      payload:
        type: object
        additionalProperties: false
        required:
          - schemaVersion
          - id
          - event
          - orgId
          - occurredAt
          - data
        properties:
          schemaVersion:
            type: string
            const: '2'
          id:
            type: string
            format: uuid
            description: Stable event ID. Deduplicate across retries.
          event:
            type: string
            const: idea.comment_added
          orgId:
            type: string
            format: uuid
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            additionalProperties: false
            required:
              - ideaId
            properties:
              ideaId:
                type: string
      examples:
        - payload:
            schemaVersion: '2'
            event: idea.comment_added
            id: 00000000-0000-4000-8000-000000000001
            orgId: 00000000-0000-4000-8000-000000000002
            occurredAt: '2026-09-26T09:00:00.000Z'
            data:
              ideaId: 00000000-0000-4000-8000-000000000003
    idea.voted:
      name: idea.voted
      title: idea.voted
      headers:
        type: object
        required:
          - X-Luma-Event
          - X-Luma-Delivery
        properties:
          X-Luma-Event:
            type: string
            const: idea.voted
          X-Luma-Delivery:
            type: string
            format: uuid
      payload:
        type: object
        additionalProperties: false
        required:
          - schemaVersion
          - id
          - event
          - orgId
          - occurredAt
          - data
        properties:
          schemaVersion:
            type: string
            const: '2'
          id:
            type: string
            format: uuid
            description: Stable event ID. Deduplicate across retries.
          event:
            type: string
            const: idea.voted
          orgId:
            type: string
            format: uuid
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            additionalProperties: false
            required:
              - ideaId
            properties:
              ideaId:
                type: string
      examples:
        - payload:
            schemaVersion: '2'
            event: idea.voted
            id: 00000000-0000-4000-8000-000000000001
            orgId: 00000000-0000-4000-8000-000000000002
            occurredAt: '2026-09-26T09:00:00.000Z'
            data:
              ideaId: 00000000-0000-4000-8000-000000000003
    idea.followed:
      name: idea.followed
      title: idea.followed
      headers:
        type: object
        required:
          - X-Luma-Event
          - X-Luma-Delivery
        properties:
          X-Luma-Event:
            type: string
            const: idea.followed
          X-Luma-Delivery:
            type: string
            format: uuid
      payload:
        type: object
        additionalProperties: false
        required:
          - schemaVersion
          - id
          - event
          - orgId
          - occurredAt
          - data
        properties:
          schemaVersion:
            type: string
            const: '2'
          id:
            type: string
            format: uuid
            description: Stable event ID. Deduplicate across retries.
          event:
            type: string
            const: idea.followed
          orgId:
            type: string
            format: uuid
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            additionalProperties: false
            required:
              - ideaId
            properties:
              ideaId:
                type: string
      examples:
        - payload:
            schemaVersion: '2'
            event: idea.followed
            id: 00000000-0000-4000-8000-000000000001
            orgId: 00000000-0000-4000-8000-000000000002
            occurredAt: '2026-09-26T09:00:00.000Z'
            data:
              ideaId: 00000000-0000-4000-8000-000000000003
