Banno Admin API

Manage and integrate the back office using the same Admin API that Banno uses for its administrative interface. Surfaces institution abilities/feature flags, consumer/business administration, messaging, alerts, plugin management, segments, ads, RDC, reports, offline mode, ACH, wires, Zelle, and OAuth/OpenID administration.

Banno Admin API is one of 11 APIs that Jack Henry & Associates publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Back Office, Institution Administration, Consumer Administration, Plugin Management, and Reports. The published artifact set on APIs.io includes an OpenAPI specification and an API reference.

OpenAPI Specification

banno-admin-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Banno Admin API
  description: |
    Back-office administration surface used by the Banno staff console
    itself. Lets institutions look up abilities/feature flags, manage
    consumer/business users, configure plugin management, manage
    segments and ads, run reports, drive RDC, ACH, wires, Zelle, and
    high-risk actions, and administer OAuth/OpenID clients.

    Resource groups (documented at
    https://banno.github.io/open-api-docs/admin-api/api-reference/v0/):
    Abilities, Accounts, ACH, Alerts, Consumers, Contact Info,
    Documents, Forms, High-Risk Actions, History, Institution Offline
    Status, Marketing/Ads, Messages, OAuth and OpenID Connect, Plugin
    Management, Remote Deposit Capture, Reports, Routing Numbers,
    Segments, Transfer Settings, Wire Transfers, and Zelle.
  version: v0
  contact:
    name: Jack Henry Developer Support
    url: https://jackhenry.dev/support/
  license:
    name: Proprietary
servers:
  - url: https://api.banno.com
    description: Banno production
tags:
  - name: Abilities
    description: Institution feature-flag map.
  - name: Consumers
    description: Consumer account administration.
  - name: Accounts
    description: Account administration across consumers.
  - name: Plugin Management
    description: Configure external applications and plugins.
  - name: Reports
    description: Operational and audit reports.
  - name: Segments
    description: User segments for targeted experiences.
  - name: Marketing Ads
    description: Configure marketing/ad cards in the dashboard.
  - name: High Risk Actions
    description: Sensitive operations requiring elevated authorization.
  - name: History
    description: Audit and activity history.
  - name: Institution Offline Status
    description: Drive scheduled or emergency offline modes.
  - name: Forms
    description: Configurable forms used inside the experience.
  - name: Documents
    description: Document delivery configuration.
  - name: Messages
    description: Two-way secure messaging on the institution side.
  - name: ACH
    description: ACH origination administration.
  - name: Wire Transfers
    description: Wire-transfer administration.
  - name: Zelle
    description: Zelle-network administration.
  - name: Remote Deposit Capture
    description: RDC administration.
security:
  - openIdConnect: []
paths:
  /a/mobile/api/v0/institutions/{institutionId}/abilities:
    get:
      summary: Lookup Institution Abilities
      operationId: getInstitutionAbilities
      tags: [Abilities]
      description: Lookup the abilities for the given institution.
      parameters:
        - $ref: '#/components/parameters/InstitutionId'
      responses:
        '200':
          description: Map of ability names to JSON values.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/AbilitiesMap' }
  /a/mobile/api/v0/institutions/{institutionId}/consumers:
    get:
      summary: List Consumers
      operationId: listConsumers
      tags: [Consumers]
      parameters:
        - $ref: '#/components/parameters/InstitutionId'
        - name: search
          in: query
          schema: { type: string }
        - name: cursor
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Paged consumer list.
          content:
            application/json:
              schema:
                type: object
                properties:
                  consumers:
                    type: array
                    items: { $ref: '#/components/schemas/Consumer' }
                  nextCursor: { type: string, nullable: true }
  /a/mobile/api/v0/institutions/{institutionId}/consumers/{consumerId}:
    get:
      summary: Get Consumer
      operationId: getConsumer
      tags: [Consumers]
      parameters:
        - $ref: '#/components/parameters/InstitutionId'
        - $ref: '#/components/parameters/ConsumerId'
      responses:
        '200':
          description: Consumer profile.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Consumer' }
  /a/mobile/api/v0/institutions/{institutionId}/consumers/{consumerId}/contact-info:
    put:
      summary: Update Consumer Contact Info
      operationId: updateContactInfo
      tags: [Consumers]
      parameters:
        - $ref: '#/components/parameters/InstitutionId'
        - $ref: '#/components/parameters/ConsumerId'
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/ContactInfo' }
      responses:
        '200':
          description: Updated contact info.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ContactInfo' }
  /a/mobile/api/v0/institutions/{institutionId}/segments:
    get:
      summary: List Segments
      operationId: listSegments
      tags: [Segments]
      parameters: [{ $ref: '#/components/parameters/InstitutionId' }]
      responses:
        '200':
          description: Segments configured for the institution.
          content:
            application/json:
              schema:
                type: object
                properties:
                  segments:
                    type: array
                    items: { $ref: '#/components/schemas/Segment' }
    post:
      summary: Create Segment
      operationId: createSegment
      tags: [Segments]
      parameters: [{ $ref: '#/components/parameters/InstitutionId' }]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/SegmentRequest' }
      responses:
        '201':
          description: Segment created.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Segment' }
  /a/mobile/api/v0/institutions/{institutionId}/ads:
    get:
      summary: List Marketing Ads
      operationId: listAds
      tags: [Marketing Ads]
      parameters: [{ $ref: '#/components/parameters/InstitutionId' }]
      responses:
        '200':
          description: Configured ads.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ads:
                    type: array
                    items: { $ref: '#/components/schemas/Ad' }
    post:
      summary: Create Marketing Ad
      operationId: createAd
      tags: [Marketing Ads]
      parameters: [{ $ref: '#/components/parameters/InstitutionId' }]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/AdRequest' }
      responses:
        '201':
          description: Ad created.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Ad' }
  /a/mobile/api/v0/institutions/{institutionId}/plugins:
    get:
      summary: List Plugins
      operationId: listPlugins
      tags: [Plugin Management]
      parameters: [{ $ref: '#/components/parameters/InstitutionId' }]
      responses:
        '200':
          description: Plugins configured for the institution.
          content:
            application/json:
              schema:
                type: object
                properties:
                  plugins:
                    type: array
                    items: { $ref: '#/components/schemas/Plugin' }
  /a/mobile/api/v0/institutions/{institutionId}/plugins/{pluginId}:
    put:
      summary: Update Plugin Configuration
      operationId: updatePlugin
      tags: [Plugin Management]
      parameters:
        - $ref: '#/components/parameters/InstitutionId'
        - name: pluginId
          in: path
          required: true
          schema: { type: string, format: uuid }
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/Plugin' }
      responses:
        '200':
          description: Plugin updated.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Plugin' }
  /a/mobile/api/v0/institutions/{institutionId}/reports:
    get:
      summary: List Reports
      operationId: listReports
      tags: [Reports]
      parameters: [{ $ref: '#/components/parameters/InstitutionId' }]
      responses:
        '200':
          description: Available reports.
          content:
            application/json:
              schema:
                type: object
                properties:
                  reports:
                    type: array
                    items: { $ref: '#/components/schemas/Report' }
  /a/mobile/api/v0/institutions/{institutionId}/high-risk-actions:
    get:
      summary: List High Risk Actions
      operationId: listHighRiskActions
      tags: [High Risk Actions]
      parameters: [{ $ref: '#/components/parameters/InstitutionId' }]
      responses:
        '200':
          description: High-risk action events for review.
          content:
            application/json:
              schema:
                type: object
                properties:
                  actions:
                    type: array
                    items: { $ref: '#/components/schemas/HighRiskAction' }
  /a/mobile/api/v0/institutions/{institutionId}/history:
    get:
      summary: List History Events
      operationId: listHistory
      tags: [History]
      parameters:
        - $ref: '#/components/parameters/InstitutionId'
        - name: actor
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Audit history.
          content:
            application/json:
              schema:
                type: object
                properties:
                  events:
                    type: array
                    items: { $ref: '#/components/schemas/HistoryEvent' }
  /a/mobile/api/v0/institutions/{institutionId}/offline-mode:
    put:
      summary: Set Institution Offline Status
      operationId: setOfflineMode
      tags: [Institution Offline Status]
      parameters: [{ $ref: '#/components/parameters/InstitutionId' }]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/OfflineStatus' }
      responses:
        '200':
          description: Offline status updated.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/OfflineStatus' }
components:
  securitySchemes:
    openIdConnect:
      type: openIdConnect
      openIdConnectUrl: https://api.banno.com/a/oidc/.well-known/openid-configuration
  parameters:
    InstitutionId:
      name: institutionId
      in: path
      required: true
      description: UUID identifying the institution.
      schema: { type: string, format: uuid }
    ConsumerId:
      name: consumerId
      in: path
      required: true
      schema: { type: string, format: uuid }
  schemas:
    AbilitiesMap:
      type: object
      description: |
        Map of ability/feature-flag names to JSON values. Examples include
        `export_transactions_enabled`, `bill_pay`, `zelle_enabled`.
      additionalProperties: true
      example:
        bill_pay: true
        zelle_enabled: true
        export_transactions_enabled: true
        rdc_consumer_daily_limit: 5000
    Consumer:
      type: object
      properties:
        id: { type: string, format: uuid }
        firstName: { type: string }
        lastName: { type: string }
        email: { type: string, format: email }
        phone: { type: string }
        status:
          type: string
          enum: [Active, Locked, Suspended, Deleted]
        enrolledDate: { type: string, format: date-time }
    ContactInfo:
      type: object
      properties:
        email: { type: string, format: email }
        phone: { type: string }
        address:
          type: object
          properties:
            line1: { type: string }
            line2: { type: string }
            city: { type: string }
            state: { type: string }
            postalCode: { type: string }
    Segment:
      type: object
      properties:
        id: { type: string, format: uuid }
        name: { type: string }
        description: { type: string }
        criteria:
          type: object
          additionalProperties: true
    SegmentRequest:
      type: object
      required: [name, criteria]
      properties:
        name: { type: string }
        description: { type: string }
        criteria:
          type: object
          additionalProperties: true
    Ad:
      type: object
      properties:
        id: { type: string, format: uuid }
        title: { type: string }
        body: { type: string }
        imageUrl: { type: string, format: uri }
        targetUrl: { type: string, format: uri }
        segmentIds:
          type: array
          items: { type: string, format: uuid }
        startDate: { type: string, format: date }
        endDate: { type: string, format: date }
        active: { type: boolean }
    AdRequest:
      type: object
      required: [title, body]
      properties:
        title: { type: string }
        body: { type: string }
        imageUrl: { type: string, format: uri }
        targetUrl: { type: string, format: uri }
        segmentIds:
          type: array
          items: { type: string, format: uuid }
        startDate: { type: string, format: date }
        endDate: { type: string, format: date }
    Plugin:
      type: object
      properties:
        id: { type: string, format: uuid }
        name: { type: string }
        externalApplicationId: { type: string, format: uuid }
        pluginUrl: { type: string, format: uri }
        cardConfig:
          type: object
          additionalProperties: true
        enabled: { type: boolean }
        segmentIds:
          type: array
          items: { type: string, format: uuid }
    Report:
      type: object
      properties:
        id: { type: string, format: uuid }
        name: { type: string }
        type: { type: string }
        url: { type: string, format: uri }
        generatedDate: { type: string, format: date-time }
    HighRiskAction:
      type: object
      properties:
        id: { type: string, format: uuid }
        actionType: { type: string }
        consumerId: { type: string, format: uuid }
        timestamp: { type: string, format: date-time }
        status:
          type: string
          enum: [Pending, Approved, Denied, Expired]
    HistoryEvent:
      type: object
      properties:
        id: { type: string, format: uuid }
        actorId: { type: string, format: uuid }
        actorType:
          type: string
          enum: [Consumer, Staff, System]
        action: { type: string }
        targetId: { type: string }
        timestamp: { type: string, format: date-time }
        metadata:
          type: object
          additionalProperties: true
    OfflineStatus:
      type: object
      properties:
        offline: { type: boolean }
        scheduledStart: { type: string, format: date-time, nullable: true }
        scheduledEnd: { type: string, format: date-time, nullable: true }
        message: { type: string }