Revel Systems · AsyncAPI Specification

Revel Webhooks

Version 2025.3.0

Revel Systems delivers event notifications to partner-registered HTTPS endpoints via webhooks. Each event type is delivered by HTTP POST with a JSON body. Requests carry an HMAC-SHA1 signature in the `X-Revel-Signature` header (computed from the request body and a shared secret) along with instance, event-type, and message identification headers. Endpoints must respond with a 2XX status within 10 seconds; failed deliveries are retried with exponential backoff over roughly 36 minutes.

View Spec View on GitHub POSRestaurantRetailiPadAsyncAPIWebhooksEvents

Channels

order.finalized
subscribe onOrderFinalized
On Order Finalized
customer.created
subscribe onCustomerCreated
On Customer Created
customer.updated
subscribe onCustomerUpdated
On Customer Updated
rewardcard.created
subscribe onRewardCardCreated
On Reward Card Created
inout.stock
subscribe onStockChanged
On Stock Changed
menu.updated
subscribe onMenuUpdated
On Menu Updated
timesheet.created
subscribe onTimesheetCreated
On Timesheet Created
timesheet.updated
subscribe onTimesheetUpdated
On Timesheet Updated
timesheet.deleted
subscribe onTimesheetDeleted
On Timesheet Deleted
app.integration.changed
subscribe onIntegrationChanged
On Integration Changed
ping
subscribe onPing
On Ping

Messages

OrderFinalized
Order Finalized
CustomerEvent
Customer Event
RewardCardEvent
Reward Card Event
StockStatus
Stock Status
MenuUpdated
Menu Updated
TimesheetEvent
Timesheet Event
IntegrationChanged
Integration Changed
Ping
Ping

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Revel Webhooks
  version: '2025.3.0'
  description: >-
    Revel Systems delivers event notifications to partner-registered HTTPS endpoints via webhooks.
    Each event type is delivered by HTTP POST with a JSON body. Requests carry an HMAC-SHA1 signature
    in the `X-Revel-Signature` header (computed from the request body and a shared secret) along with
    instance, event-type, and message identification headers. Endpoints must respond with a 2XX status
    within 10 seconds; failed deliveries are retried with exponential backoff over roughly 36 minutes.
  contact:
    name: Revel Systems Developer Support
    url: https://developer.revelsystems.com/revelsystems/docs/webhooks
  x-generated-from: documentation
  x-source-url: https://developer.revelsystems.com/revelsystems/docs/webhooks
  x-last-validated: '2026-06-03'
defaultContentType: application/json
channels:
  order.finalized:
    subscribe:
      operationId: onOrderFinalized
      summary: On Order Finalized
      description: Triggered when an order is completed. Payload is a full OrderAllInOne object including items, modifiers, taxes, payments, and history.
      message:
        $ref: '#/components/messages/OrderFinalized'
  customer.created:
    subscribe:
      operationId: onCustomerCreated
      summary: On Customer Created
      description: Triggered when a customer record is created.
      message:
        $ref: '#/components/messages/CustomerEvent'
  customer.updated:
    subscribe:
      operationId: onCustomerUpdated
      summary: On Customer Updated
      description: Triggered when a customer record is updated.
      message:
        $ref: '#/components/messages/CustomerEvent'
  rewardcard.created:
    subscribe:
      operationId: onRewardCardCreated
      summary: On Reward Card Created
      description: Triggered when a rewards card is created.
      message:
        $ref: '#/components/messages/RewardCardEvent'
  inout.stock:
    subscribe:
      operationId: onStockChanged
      summary: On Stock Changed
      description: Triggered when a product, ingredient, or modifier stock status changes.
      message:
        $ref: '#/components/messages/StockStatus'
  menu.updated:
    subscribe:
      operationId: onMenuUpdated
      summary: On Menu Updated
      description: Triggered when menu changes are pushed from the management console.
      message:
        $ref: '#/components/messages/MenuUpdated'
  timesheet.created:
    subscribe:
      operationId: onTimesheetCreated
      summary: On Timesheet Created
      description: Triggered when a timesheet entry is created.
      message:
        $ref: '#/components/messages/TimesheetEvent'
  timesheet.updated:
    subscribe:
      operationId: onTimesheetUpdated
      summary: On Timesheet Updated
      description: Triggered when a timesheet entry is updated.
      message:
        $ref: '#/components/messages/TimesheetEvent'
  timesheet.deleted:
    subscribe:
      operationId: onTimesheetDeleted
      summary: On Timesheet Deleted
      description: Triggered when a timesheet entry is deleted.
      message:
        $ref: '#/components/messages/TimesheetEvent'
  app.integration.changed:
    subscribe:
      operationId: onIntegrationChanged
      summary: On Integration Changed
      description: Triggered when integration access permissions are modified.
      message:
        $ref: '#/components/messages/IntegrationChanged'
  ping:
    subscribe:
      operationId: onPing
      summary: On Ping
      description: System test event used to verify endpoint readiness.
      message:
        $ref: '#/components/messages/Ping'
components:
  messageTraits:
    revelHeaders:
      headers:
        type: object
        properties:
          X-Revel-Signature:
            type: string
            description: HMAC-SHA1 signature of the request body computed with the shared secret.
          X-Revel-Instance:
            type: string
            description: Customer instance name.
          X-Revel-Event-Type:
            type: string
            description: Event category.
          X-Revel-Event-Id:
            type: string
          X-Revel-Message-Id:
            type: string
          X-Revel-Establishment-Id:
            type: string
            description: Establishment identifier (optional).
  messages:
    OrderFinalized:
      name: orderFinalized
      title: Order Finalized
      traits:
      - $ref: '#/components/messageTraits/revelHeaders'
      payload:
        type: object
        description: OrderAllInOne object with items, modifiers, taxes, payments, and order history.
        properties:
          event:
            type: string
            const: order.finalized
          id:
            type: integer
            example: 1
      examples:
      - name: OrderFinalizedDefaultExample
        summary: Default OrderFinalized example
        x-microcks-default: true
        payload:
          event: order.finalized
          id: 1
    CustomerEvent:
      name: customerEvent
      title: Customer Event
      traits:
      - $ref: '#/components/messageTraits/revelHeaders'
      payload:
        type: object
        description: Customer profile data with addresses, contact information, and loyalty details.
        properties:
          id: {type: integer, example: 1}
          first_name: {type: string, example: "Jane"}
          last_name: {type: string, example: "Doe"}
          email: {type: string, format: email, example: "[email protected]"}
      examples:
      - name: CustomerEventDefaultExample
        summary: Default CustomerEvent example
        x-microcks-default: true
        payload:
          id: 1
          first_name: "Jane"
          last_name: "Doe"
          email: "[email protected]"
    RewardCardEvent:
      name: rewardCardEvent
      title: Reward Card Event
      traits:
      - $ref: '#/components/messageTraits/revelHeaders'
      payload:
        type: object
        properties:
          id: {type: integer, example: 1}
          customer: {type: integer, example: 1}
      examples:
      - name: RewardCardEventDefaultExample
        summary: Default RewardCardEvent example
        x-microcks-default: true
        payload:
          id: 1
          customer: 1
    StockStatus:
      name: stockStatus
      title: Stock Status
      traits:
      - $ref: '#/components/messageTraits/revelHeaders'
      payload:
        type: object
        properties:
          id:
            type: integer
            description: Product or modifier ID.
            example: 1
          instock:
            type: boolean
            example: true
          type:
            type: string
            enum: [product, modifier]
            example: product
          barcode:
            type: string
            example: "0123456789012"
      examples:
      - name: StockStatusDefaultExample
        summary: Default StockStatus example
        x-microcks-default: true
        payload:
          id: 1
          instock: true
          type: product
          barcode: "0123456789012"
    MenuUpdated:
      name: menuUpdated
      title: Menu Updated
      traits:
      - $ref: '#/components/messageTraits/revelHeaders'
      payload:
        type: object
        properties:
          event:
            type: string
            const: menu.updated
      examples:
      - name: MenuUpdatedDefaultExample
        summary: Default MenuUpdated example
        x-microcks-default: true
        payload:
          event: menu.updated
    TimesheetEvent:
      name: timesheetEvent
      title: Timesheet Event
      traits:
      - $ref: '#/components/messageTraits/revelHeaders'
      payload:
        type: object
        description: Labor tracking detail including clock times, break duration, department, role, wage, and action type.
        properties:
          id: {type: integer, example: 1}
          employee: {type: integer, example: 1}
          establishment: {type: integer, example: 1}
          action: {type: string, example: "clock_in"}
      examples:
      - name: TimesheetEventDefaultExample
        summary: Default TimesheetEvent example
        x-microcks-default: true
        payload:
          id: 1
          employee: 1
          establishment: 1
          action: "clock_in"
    IntegrationChanged:
      name: integrationChanged
      title: Integration Changed
      traits:
      - $ref: '#/components/messageTraits/revelHeaders'
      payload:
        type: object
        properties:
          event:
            type: string
            const: app.integration.changed
      examples:
      - name: IntegrationChangedDefaultExample
        summary: Default IntegrationChanged example
        x-microcks-default: true
        payload:
          event: app.integration.changed
    Ping:
      name: ping
      title: Ping
      traits:
      - $ref: '#/components/messageTraits/revelHeaders'
      payload:
        type: object
        properties:
          event:
            type: string
            const: ping
      examples:
      - name: PingDefaultExample
        summary: Default Ping example
        x-microcks-default: true
        payload:
          event: ping