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 }