Ingestion API
Jack Henry Modern Eventing
>
API Reference
>
Ingestion API
openapi: 3.0.3
info:
title: JH-Events Ingestion API
version: 1.0.0
description: Event ingestion gateway for the Enterprise Event System.
contact:
name: Team Icarus
url: https://www.jackhenry.com/
email: jh-gcp-gbl-icarus-engineering@jackhenry.com
servers:
- url: https://banno.com
description: Production environment
- url: https://platform.banno-staging.com
description: Staging environment
- url: https://platform.banno-development.com
description: Development environment
tags:
- name: Ingestion
description: Event ingestion endpoints
paths:
/a/api/enterprise-event/v1/wcf/events:
post:
x-ignoreRules:
- jhapi-000-Content-Definitions
summary: Ingest WCF XML Events
description: |
Accepts WCF SOAP envelope events from external systems. This endpoint requires JWT authentication
and validates that the client ID is in the allowed client list. Expects full SOAP envelope with
JXChange schema (EESEventAdd).
operationId: ingestWcfEvents
tags:
- Ingestion
security:
- bearerAuth: []
requestBody:
required: true
content:
text/xml:
schema:
$ref: '#/components/schemas/WcfSoapEnvelope'
example: |
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>...</s:Header>
<s:Body>
<EESEventAdd xmlns="http://jackhenry.com/jxchange/JES/2008">
<JESMsgRqHdr>
<JESHdr>
<AuditWsId>ws-123</AuditWsId>
<ConsumerProd>2020Teller</ConsumerProd>
<ConsumerRqDtTime>2024-01-15T10:30:00Z</ConsumerRqDtTime>
<jXLogTrackingId>tracking-123</jXLogTrackingId>
</JESHdr>
</JESMsgRqHdr>
<EESEventInfoArray>
<EESEventInfo>
<EventNum>1001</EventNum>
<EventProd>2020Teller</EventProd>
<EventTimeDt>2024-01-15T10:30:00Z</EventTimeDt>
<InstId>inst-123</InstId>
<ProdEnv>production</ProdEnv>
<EventWsId>ws-123</EventWsId>
<EventUniqueId>event-uuid</EventUniqueId>
<EventDataInfoArray>...</EventDataInfoArray>
<EESIdHistInfoArray>...</EESIdHistInfoArray>
</EESEventInfo>
</EESEventInfoArray>
</EESEventAdd>
</s:Body>
</s:Envelope>
responses:
'200':
$ref: '#/components/responses/WcfSuccessResponse'
'400':
$ref: '#/components/responses/WcfBadRequestResponse'
'401':
$ref: '#/components/responses/WcfUnauthorizedResponse'
'403':
$ref: '#/components/responses/WcfForbiddenResponse'
'500':
$ref: '#/components/responses/WcfInternalErrorResponse'
/a/api/enterprise-event/v1/json/events:
post:
summary: Ingest Batch JSON Events
description: |
This endpoint requires JWT authentication
and validates that the client ID is in the allowed client list. Expects an array of one or more JsonEventRequest objects. Returns 200 with empty body on success.
operationId: ingestJsonEventBatch
tags:
- Ingestion
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonEventRequest'
responses:
'200':
$ref: '#/components/responses/JsonEventBatchSuccessResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/UnexpectedError'
components:
securitySchemes:
bearerAuth:
description: OpenIDConnect JWT Token
type: http
scheme: bearer
bearerFormat: JWT
schemas:
EESEventInfo:
type: object
description: Individual event information within EESEventAdd
properties:
EventNum:
type: integer
example: 1001
EventProd:
type: string
example: 2020Teller
EventTimeDt:
type: string
format: date-time
example: '2024-01-15T10:30:00Z'
InstId:
type: string
example: inst-123
ProdEnv:
type: string
example: production
EventWsId:
type: string
example: ws-123
EventUniqueId:
type: string
example: event-uuid
EventDataInfoArray:
type: object
properties:
EventDataInfo:
type: array
items:
type: object
properties:
Name:
type: string
Val:
type: string
PrevVal:
type: string
EESIdHistInfoArray:
type: object
properties:
EESIdHistInfo:
type: array
items:
type: object
properties:
EESHistId:
type: string
EESEventAdd:
type: object
description: JXChange EES Event Add request
xml:
name: EESEventAdd
namespace: http://jackhenry.com/jxchange/JES/2008
properties:
JESMsgRqHdr:
type: object
properties:
JESHdr:
type: object
properties:
AuditWsId:
type: string
ConsumerProd:
type: string
ConsumerRqDtTime:
type: string
jXLogTrackingId:
type: string
EESEventInfoArray:
type: object
properties:
EESEventInfo:
type: array
items:
$ref: '#/components/schemas/EESEventInfo'
WcfSoapEnvelope:
type: object
description: SOAP Envelope containing EESEventAdd request
xml:
name: Envelope
namespace: http://schemas.xmlsoap.org/soap/envelope/
properties:
Body:
type: object
xml:
name: Body
properties:
EESEventAdd:
$ref: '#/components/schemas/EESEventAdd'
WcfSoapSuccessResponse:
type: object
description: SOAP Envelope containing successful EESEventAddResponse
xml:
name: Envelope
namespace: http://schemas.xmlsoap.org/soap/envelope/
properties:
Header:
type: object
xml:
name: Header
description: SOAP header with WS-Security timestamp
properties:
Security:
type: object
xml:
namespace: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
prefix: wsse
properties:
Timestamp:
type: object
xml:
namespace: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
prefix: wsu
properties:
Created:
type: string
format: date-time
description: Timestamp when response was created
example: '2024-01-15T10:30:00.000Z'
Expires:
type: string
format: date-time
description: Timestamp when response expires (5 minutes from creation)
example: '2024-01-15T10:35:00.000Z'
Body:
type: object
xml:
name: Body
properties:
EESEventAddResponse:
type: object
xml:
name: EESEventAddResponse
namespace: http://jackhenry.com/jxchange/JES/2008
properties:
JESMsgRsHdr:
type: object
description: JXChange message response header echoing request values
properties:
JESHdr:
type: object
properties:
AuditWsId:
type: string
description: Echoed from request
example: ws-123
ConsumerProd:
type: string
description: Echoed from request
example: 2020Teller
ConsumerRqDtTime:
type: string
description: Echoed from request
example: '2024-01-15T10:30:00Z'
jXLogTrackingId:
type: string
description: Echoed from request
example: tracking-123
RsStat:
type: string
description: Response status
enum:
- Success
example: Success
WcfSoapFault:
type: object
description: SOAP Fault response for WCF errors. Includes WS-Security header with timestamp, same as success responses.
xml:
name: Envelope
namespace: http://schemas.xmlsoap.org/soap/envelope/
properties:
Header:
type: object
xml:
name: Header
description: SOAP header with WS-Security timestamp (included in fault responses)
properties:
Security:
type: object
xml:
namespace: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
prefix: wsse
properties:
Timestamp:
type: object
xml:
namespace: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
prefix: wsu
properties:
Created:
type: string
format: date-time
description: Timestamp when fault response was created
example: '2024-01-15T10:30:00.000Z'
Expires:
type: string
format: date-time
description: Timestamp when fault response expires (5 minutes from creation)
example: '2024-01-15T10:35:00.000Z'
Body:
type: object
xml:
name: Body
properties:
Fault:
type: object
xml:
name: Fault
properties:
faultcode:
type: string
description: SOAP fault code, always "s:Client" for client errors
example: s:Client
faultstring:
type: string
description: Human-readable fault description
example: Failed to decode XML request
JsonEventRequest:
type: object
description: JSON event request format
required:
- eventNum
- eventTimeDt
- receivedDateTime
properties:
eventUniqueId:
type: string
description: Unique event identifier
example: event-uuid-123
busCorrelId:
type: string
description: Business correlation ID
example: correl-123
custom:
type: string
description: Custom field
example: custom-value
eesIdNumHistInfo:
type: string
description: EES ID number history info
example: hist-info
eventAppId:
type: string
description: Event application ID
example: app-123
eventNum:
type: integer
description: Event number
example: 1001
eventProcId:
type: string
description: Event process ID
example: proc-123
eventProd:
type: string
description: Event product/source
example: 2020Teller
eventThreadId:
type: string
description: Event thread ID
example: thread-123
eventTimeDt:
type: integer
format: int64
description: Event time in milliseconds since epoch
example: 1705324200000
instId:
type: string
description: Institution ID
example: inst-123
prodEnv:
type: string
description: Product environment
example: production
systemId:
type: string
description: System ID
example: sys-123
workflowCorrelId:
type: string
description: Workflow correlation ID
example: workflow-123
eventUsrId:
type: string
description: Event user ID
example: user-123
eventWsId:
type: string
description: Event workstation ID
example: ws-123
receivedDateTime:
type: integer
format: int64
description: Received time in milliseconds since epoch
example: 1705324200000
isTest:
type: boolean
description: Whether this is a test event
default: false
example: false
addedByUser:
type: string
description: User who added the event
example: admin
jxLogTrackingId:
type: string
description: JX log tracking ID
example: tracking-123
eesEventDatas:
type: array
description: Array of event data
items:
type: object
properties:
name:
type: string
example: fieldName
val:
type: string
example: fieldValue
prevVal:
type: string
example: previousValue
eventSource:
type: string
description: Event source
example: 2020Teller
StandardErrorType:
description: A string path which uniquely classifies the domain of the error.
type: string
nullable: false
example: jackhenry/operation-failed
StandardErrorTitle:
description: A end-user readable string title of the error type.
nullable: false
type: string
StandardErrorDetails:
description: An array of end-user readable strings which provide additional details for the error message.
type: array
nullable: false
items:
type: string
StandardErrorData:
type: object
description: |
Additional data that could be useful to a developer or for handing the error programmatically. The schema for the data in this object is intentionally left undefined.
nullable: true
StandardError:
type: object
required:
- type
- title
- details
properties:
type:
$ref: '#/components/schemas/StandardErrorType'
title:
$ref: '#/components/schemas/StandardErrorTitle'
details:
$ref: '#/components/schemas/StandardErrorDetails'
data:
$ref: '#/components/schemas/StandardErrorData'
responses:
WcfSuccessResponse:
description: Event processed successfully
content:
text/xml:
schema:
$ref: '#/components/schemas/WcfSoapSuccessResponse'
example: |
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsu:Created>2024-01-15T10:30:00.000Z</wsu:Created>
<wsu:Expires>2024-01-15T10:35:00.000Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</s:Header>
<s:Body>
<EESEventAddResponse xmlns="http://jackhenry.com/jxchange/JES/2008">
<JESMsgRsHdr>
<JESHdr>
<AuditWsId>ws-123</AuditWsId>
<ConsumerProd>2020Teller</ConsumerProd>
<ConsumerRqDtTime>2024-01-15T10:30:00Z</ConsumerRqDtTime>
<jXLogTrackingId>tracking-123</jXLogTrackingId>
</JESHdr>
</JESMsgRsHdr>
<RsStat>Success</RsStat>
</EESEventAddResponse>
</s:Body>
</s:Envelope>
WcfBadRequestResponse:
x-ignoreRules:
- jhapi-400-problem-json-media-type
description: Bad Request - Invalid event data or missing required fields
content:
application/xml:
schema:
$ref: '#/components/schemas/WcfSoapFault'
WcfUnauthorizedResponse:
description: Unauthorized
content:
application/xml:
schema:
$ref: '#/components/schemas/WcfSoapFault'
WcfForbiddenResponse:
description: Forbidden
content:
application/xml:
schema:
$ref: '#/components/schemas/WcfSoapFault'
WcfInternalErrorResponse:
x-ignoreRules:
- jhapi-500-problem-json-media-type
description: Internal Server Error
content:
application/xml:
schema:
$ref: '#/components/schemas/WcfSoapFault'
JsonEventBatchSuccessResponse:
description: Events processed successfully (empty body)
BadRequest:
description: The server could not understand the request due to an invalid request.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/StandardError'
Unauthorized:
description: Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.
Forbidden:
description: The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401, the clients identity is known to the server.
UnexpectedError:
description: An unexpected internal server error occurred while processing the request.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/StandardError'
examples:
internalServerError:
summary: Internal server error
value:
type: general/internal-server-error
title: Internal server error
details:
- Unexpected internal server error
Have a Question?
- Have a how-to question? Seeing a weird error? Get help on StackOverflow.
- Register for the Developer Office Hours where we answer technical Q&A from the audience.
Did this page help you?
Why was this page helpful?
Why wasn't this page helpful?
Thank you for your feedback!
Last updated Wed Aug 7 2024