Jack Henry & Associates · AsyncAPI Specification

Jack Henry Enterprise Event System

Version v0

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.

Jack Henry Enterprise Event System is an event-driven AsyncAPI specification published by Jack Henry & Associates on the APIs.io network, version v0.

The spec defines 4 channels, 4 message types, transport over KAFKA-SECURE.

Tagged areas include Financial Services, Banking, Core Banking, Digital Banking, and Payments.

View Spec View on GitHub Financial ServicesBankingCore BankingDigital BankingPaymentsLendingFraudOpen BankingCommunity BanksCredit UnionsFintechOAuthOpenID ConnectAsyncAPIWebhooksEvents

Channels

jh.consumer.accounts.v1
subscribe subscribeAccountEvents
Consumer-account lifecycle events.
jh.consumer.transactions.v1
subscribe subscribeTransactionEvents
Transaction postings (debits, credits, fees, interest).
jh.consumer.alerts.v1
subscribe subscribeAlertEvents
Alert-fired events triggered by user-configured rules.
jh.consumer.user-lifecycle.v1
subscribe subscribeUserLifecycleEvents
User enrollment, profile updates, lockouts, deletions.

Messages

AccountEvent
AccountEvent
TransactionEvent
TransactionEvent
AlertEvent
AlertEvent
UserLifecycleEvent
UserLifecycleEvent

Servers

kafka-secure
production events.jackhenry.com
Jack Henry Enterprise Event System (TLS + SASL).

AsyncAPI Specification

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]