Enterprise Event System

Real-time, pub/sub-based event streaming surface. Lets institutions and partners react to events emitted across Jack Henry's platform (account events, transaction events, alert events, user-lifecycle events) without polling.

Enterprise Event System is one of 11 APIs that Jack Henry & Associates publishes on the APIs.io network, described by an AsyncAPI event-driven specification.

Tagged areas include Events, Pub/Sub, Streaming, Webhooks, and Real-Time. The published artifact set on APIs.io includes an AsyncAPI specification and API documentation.

AsyncAPI Specification

enterprise-event-system-asyncapi.yml Raw ↑
asyncapi: 2.6.0
info:
  title: Jack Henry Enterprise Event System
  version: v0
  description: |
    Real-time, pub/sub-based event system for Jack Henry platform events.
    Lets partners and institutions subscribe to account events, transaction
    events, alert events, and user-lifecycle events without polling.
servers:
  production:
    url: events.jackhenry.com
    protocol: kafka-secure
    description: Jack Henry Enterprise Event System (TLS + SASL).
defaultContentType: application/json
channels:
  jh.consumer.accounts.v1:
    description: Consumer-account lifecycle events.
    subscribe:
      operationId: subscribeAccountEvents
      message: { $ref: '#/components/messages/AccountEvent' }
  jh.consumer.transactions.v1:
    description: Transaction postings (debits, credits, fees, interest).
    subscribe:
      operationId: subscribeTransactionEvents
      message: { $ref: '#/components/messages/TransactionEvent' }
  jh.consumer.alerts.v1:
    description: Alert-fired events triggered by user-configured rules.
    subscribe:
      operationId: subscribeAlertEvents
      message: { $ref: '#/components/messages/AlertEvent' }
  jh.consumer.user-lifecycle.v1:
    description: User enrollment, profile updates, lockouts, deletions.
    subscribe:
      operationId: subscribeUserLifecycleEvents
      message: { $ref: '#/components/messages/UserLifecycleEvent' }
components:
  messages:
    AccountEvent:
      name: AccountEvent
      payload: { $ref: '#/components/schemas/AccountEvent' }
    TransactionEvent:
      name: TransactionEvent
      payload: { $ref: '#/components/schemas/TransactionEvent' }
    AlertEvent:
      name: AlertEvent
      payload: { $ref: '#/components/schemas/AlertEvent' }
    UserLifecycleEvent:
      name: UserLifecycleEvent
      payload: { $ref: '#/components/schemas/UserLifecycleEvent' }
  schemas:
    BaseEnvelope:
      type: object
      properties:
        eventId: { type: string, format: uuid }
        eventTime: { type: string, format: date-time }
        institutionId: { type: string, format: uuid }
        eventType: { type: string }
        version: { type: string, example: v1 }
    AccountEvent:
      allOf:
        - $ref: '#/components/schemas/BaseEnvelope'
        - type: object
          properties:
            data:
              type: object
              properties:
                accountId: { type: string, format: uuid }
                userId: { type: string, format: uuid }
                changeType:
                  type: string
                  enum: [Opened, Closed, BalanceChanged, StatusChanged, Renamed]
                balance: { type: number }
                accountType: { type: string }
    TransactionEvent:
      allOf:
        - $ref: '#/components/schemas/BaseEnvelope'
        - type: object
          properties:
            data:
              type: object
              properties:
                transactionId: { type: string, format: uuid }
                accountId: { type: string, format: uuid }
                userId: { type: string, format: uuid }
                amount: { type: number }
                type:
                  type: string
                  enum: [Debit, Credit, Fee, Interest, Transfer]
                status:
                  type: string
                  enum: [Pending, Posted, Returned]
                description: { type: string }
    AlertEvent:
      allOf:
        - $ref: '#/components/schemas/BaseEnvelope'
        - type: object
          properties:
            data:
              type: object
              properties:
                alertId: { type: string, format: uuid }
                userId: { type: string, format: uuid }
                accountId: { type: string, format: uuid, nullable: true }
                alertType: { type: string }
                channels:
                  type: array
                  items: { type: string }
    UserLifecycleEvent:
      allOf:
        - $ref: '#/components/schemas/BaseEnvelope'
        - type: object
          properties:
            data:
              type: object
              properties:
                userId: { type: string, format: uuid }
                changeType:
                  type: string
                  enum: [Enrolled, LoggedIn, ProfileUpdated, Locked, Unlocked, Deleted]