asyncapi: 2.6.0 info: title: Luciq Webhook Events description: >- Luciq (formerly Instabug) webhooks deliver real-time notifications about bug reports, crash reports, and APM events to a configured callback URL via HTTP POST. The webhook integration is configured per Luciq project from the dashboard and can forward either "Bugs & Crashes" payloads or "APM" payloads. Each delivery is signed with HMAC-SHA256 using a 16-64 character alphanumeric secret bound at configuration time; verify the signature in the `x-ibg-signature-256` header against a SHA256 HMAC of the raw body to confirm the request originated from Luciq. version: '1.0' contact: name: Luciq Support url: https://docs.luciq.ai/product-guides-and-integrations/integrations/webhook email: support@luciq.ai servers: customerEndpoint: url: '{webhookUrl}' protocol: https description: >- Customer-configured HTTPS callback URL registered in the Luciq dashboard under Integrations > Webhook. variables: webhookUrl: description: The HTTPS endpoint that receives the POSTed payload. defaultContentType: application/json channels: /webhook: description: >- Receives Luciq event notifications via HTTP POST. The specific message type depends on whether the webhook is configured for "Bugs & Crashes" or "APM" forwarding. bindings: http: type: request method: POST publish: operationId: receiveLuciqWebhook summary: Receive a Luciq webhook notification description: >- Luciq POSTs a JSON payload to the configured URL whenever a forwarded event occurs. The request is signed with HMAC-SHA256 using the secret bound to the webhook; the signature is delivered in the x-ibg-signature-256 header. bindings: http: type: request message: oneOf: - $ref: '#/components/messages/BugReportNotification' - $ref: '#/components/messages/CrashReportNotification' - $ref: '#/components/messages/APMEventNotification' components: messages: BugReportNotification: name: bugReport title: Bug Report Notification summary: A new user-reported bug was submitted via the Luciq SDK. description: >- Sent when a user submits a bug via the in-app reporter. Payload carries the bug title, reporter email, categorization, environment, and reproduction artifacts. contentType: application/json headers: type: object properties: x-ibg-signature-256: type: string description: HMAC-SHA256 of the raw body using the webhook secret. payload: $ref: '#/components/schemas/BugWebhookPayload' CrashReportNotification: name: crashReport title: Crash Report Notification summary: A crash or non-fatal exception was captured. description: >- Sent when Luciq receives a new crash or non-fatal exception event for a project with crash forwarding enabled. contentType: application/json headers: type: object properties: x-ibg-signature-256: type: string description: HMAC-SHA256 of the raw body using the webhook secret. payload: $ref: '#/components/schemas/CrashWebhookPayload' APMEventNotification: name: apmEvent title: APM Event Notification summary: An APM alert condition was triggered. description: >- Sent when an APM alert rule fires (network failure, screen rendering regression, app launch threshold, flow Apdex drop, etc.). contentType: application/json headers: type: object properties: x-ibg-signature-256: type: string description: HMAC-SHA256 of the raw body using the webhook secret. payload: $ref: '#/components/schemas/APMEventWebhookPayload' schemas: BugWebhookPayload: type: object required: [title, reported_at] properties: title: type: string reported_at: type: string format: date-time email: type: string format: email private_url: type: string format: uri categories: type: array items: type: string tags: type: array items: type: string device: type: string user_steps: type: array items: type: object properties: type: type: string message: type: string timestamp: type: string format: date-time console_log: type: string attachments: type: array items: type: object properties: type: type: string enum: [image, video, file] url: type: string format: uri CrashWebhookPayload: type: object required: [exception, number, url] properties: exception: type: string number: type: integer url: type: string format: uri status: type: string enum: [new, in-progress, resolved, ignored] device: type: string memory_mb: type: integer storage_mb: type: integer battery_pct: type: integer minimum: 0 maximum: 100 app_version: type: string console_log: type: string user_steps: type: array items: type: object image_attachments: type: array items: type: string format: uri APMEventWebhookPayload: type: object required: [title, metric, application, platform] properties: title: type: string trace: type: string trigger: type: string current_value: type: number metric: type: string enum: [network_failure_rate, app_launch_time, screen_loading_time, ui_hang_rate, flow_apdex] application: type: string platform: type: string enum: [ios, android, react_native, flutter] url: type: string format: uri