Memo Bank · OpenAPI Overlay 1.0.0

API Evangelist enhancements for Memo Bank Marketplace API

6 actions 6 updates security
Generated by API Evangelist Written by API Evangelist tooling for Memo Bank's API. It is a proposal applied on top of the contract, not a document Memo Bank publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-source-docx-api-evangelist-rationalex-apievangelist-profilex-apievangelist-reviewedcontactx-source-notesecuritySchemesx-token-lifetimes

Targets 5

$.info
$.components
$.paths['/oauth2/token'].post
$.components.schemas.OAuth2Token.properties.connection_id
$

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for Memo Bank Marketplace API
  version: 1.0.0
x-generated: '2026-08-17'
x-method: generated
x-source: openapi/memo-bank-marketplace-api-openapi.yml
x-note: >-
  Non-destructive enhancements over the spec Memo Bank publishes at
  https://docs-marketplace.api.memo.bank/source.yaml. The original is preserved in openapi/_original/. This
  document carries a single operation (the OAuth 2.0 token endpoint) but the surrounding contract - the
  authorization endpoint, token lifetimes, the dual-credential X-Memo-Signature scheme and the connection
  lifecycle - is documented only in prose. These actions bring that into the machine-readable contract.
actions:
- target: $.info
  update:
    x-apievangelist-profile: https://apis.io/provider/memo-bank/
    x-apievangelist-reviewed: '2026-08-17'
    contact:
      name: Memo Bank open banking team
      email: openbanking@memo.bank
    x-source-doc: https://docs-marketplace.api.memo.bank/topic/topic-getting-started
    x-source-note: >-
      openbanking@memo.bank is the address Memo Bank publishes for marketplace application registration. The
      spec had no info.contact block.
- target: $.components
  update:
    securitySchemes:
      JWT:
        type: apiKey
        in: header
        name: X-Memo-Signature
        description: >-
          The application's RS256-signed JWT. NOTE the difference from the Premium Bank API: for marketplace
          requests the JWT travels in X-Memo-Signature while the Authorization header carries the OAuth 2.0
          access token. The payload adds an oat#S256 claim holding base64url(sha256(access_token)), binding
          the signature to that specific access token. Modelled as apiKey rather than http bearer because it
          is a custom header, not an Authorization scheme.
        x-source-doc: https://docs-marketplace.api.memo.bank/authentication
      OAuth2:
        type: oauth2
        description: >-
          Authorization code flow with per-workspace and per-account user consent. Access tokens live 2 hours;
          refresh tokens live 14 days and are single-use, so each refresh rotates them; authorization codes
          live 5 minutes and are single-use.
        flows:
          authorizationCode:
            authorizationUrl: https://client.memo.bank/authorize
            tokenUrl: https://api.memo.bank/oauth2/token
            refreshUrl: https://api.memo.bank/oauth2/token
            scopes: {}
        x-scopes-note: >-
          Left empty deliberately. Memo Bank requires applicants to declare the scopes they need at
          registration and returns a granted scope string in the token response, but publishes NO scope names
          anywhere. Populating this map would be fabrication. See scopes/memo-bank-scopes.yml.
        x-source-doc: https://docs-marketplace.api.memo.bank/topic/topic-authorization-flow
    x-api-evangelist-rationale: >-
      The published document references a `JWT` security scheme on its only operation but defines no
      securitySchemes at all, and never expresses the OAuth 2.0 flow it exists to serve as a scheme.
- target: $.paths['/oauth2/token'].post
  update:
    x-token-lifetimes:
      access_token: 2 hours
      refresh_token: 14 days, single use
      authorization_code: 5 minutes, single use
    x-refresh-rotation: true
    x-dual-credential: >-
      This endpoint is itself JWT-protected - an application must sign the token request with X-Memo-Signature
      in addition to supplying client_id and client_secret in the body.
    x-agentic-access:
      action-class: acting
      consequence: write
      audit: required
    x-source-doc: https://docs-marketplace.api.memo.bank/topic/topic-authorization-flow
- target: $.components.schemas.OAuth2Token.properties.connection_id
  update:
    x-api-evangelist-note: >-
      The join key for multi-tenant integrations. The same value arrives on webhook deliveries in the
      X-Memo-Connection-Id header, so an application routes events to the right customer by it. One connection
      exists per user/workspace pair; once a user deactivates it, API calls fail with inactive_connection.
    x-source-doc: https://docs-marketplace.api.memo.bank/topic/topic-connection-lifecycle
- target: $.components
  update:
    schemas:
      Error:
        type: object
        description: Memo Bank's unified error envelope. Not RFC 9457 problem+json.
        required:
        - code
        - message
        properties:
          code:
            type: string
            example: inactive_connection
          message:
            type: string
            example: The connection has been deactivated by the user.
        x-source-doc: https://docs-marketplace.api.memo.bank/topic/topic-connection-lifecycle
    x-api-evangelist-rationale: >-
      The token operation declares only a 200 response. No error schema exists, yet the documentation names a
      marketplace-specific inactive_connection code and an OAuth error/error_description redirect contract.
- target: $
  update:
    x-authorization-endpoint: https://client.memo.bank/authorize
    x-authorization-params:
    - client_id
    - redirect_uri
    - scope
    - state
    x-pkce: not documented
    x-api-evangelist-gap: >-
      The authorization endpoint lives on client.memo.bank, a different host from the api.memo.bank server
      declared in servers[], and is not represented in the document at all. No PKCE (RFC 7636) is documented,
      and no RFC 8414 authorization-server metadata is served, so none of this is machine-discoverable.
    x-source-doc: https://docs-marketplace.api.memo.bank/topic/topic-authorization-flow