openapi: 3.1.0
info:
  title: JoinMarket wallet daemon
  description: JAM-compatible HTTP/WebSocket API for JoinMarket-NG
  version: 0.17.0
paths:
  /api/v1/getinfo:
    get:
      summary: Get Info
      description: Return backend version information.
      operationId: version
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetInfoResponse'
  /api/v1/session:
    get:
      summary: Get Session
      description: 'Heartbeat / status endpoint.


        If an Authorization header is present, it is validated. An invalid

        token returns 401. A missing token is fine (unauthenticated access).'
      operationId: session
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
  /api/v1/wallet/all:
    get:
      summary: List Wallets
      description: List available wallet files.
      operationId: listwallets
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListWalletsResponse'
  /api/v1/wallet/create:
    post:
      summary: Wallet Create
      description: Create a new wallet.
      operationId: createwallet
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWalletRequest'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateWalletResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/recover:
    post:
      summary: Wallet Recover
      description: Recover a wallet from a seed phrase.
      operationId: recoverwallet
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecoverWalletRequest'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateWalletResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/unlock:
    post:
      summary: Wallet Unlock
      description: Unlock (decrypt) a wallet.
      operationId: unlockwallet
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnlockWalletRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnlockWalletResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/lock:
    get:
      summary: Wallet Lock
      description: Lock the current wallet and stop all services.
      operationId: lockwallet
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LockWalletResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/token:
    post:
      summary: Token Refresh
      description: Refresh the access/refresh token pair.
      operationId: token
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/display:
    get:
      summary: Wallet Display
      description: Return full wallet display with accounts, branches, and entries.
      operationId: displaywallet
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletDisplayResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/utxos:
    get:
      summary: List Utxos
      description: List all UTXOs in the wallet.
      operationId: listutxos
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListUtxosResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/address/new/{mixdepth}:
    get:
      summary: Get New Address
      description: Get a new receive address for the specified mixdepth.
      operationId: getaddress
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      - name: mixdepth
        in: path
        required: true
        schema:
          type: string
          title: Mixdepth
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAddressResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/address/timelock/new/{lockdate}:
    get:
      summary: Get Timelock Address
      description: 'Get a new timelocked (fidelity bond) address.


        The lockdate should be in YYYY-mm format (e.g., "2025-06").'
      operationId: gettimelockaddress
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      - name: lockdate
        in: path
        required: true
        schema:
          type: string
          title: Lockdate
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAddressResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/getseed:
    get:
      summary: Get Seed
      description: Return the wallet's BIP39 mnemonic seed phrase.
      operationId: getseed
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSeedResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/freeze:
    post:
      summary: Freeze Utxo
      description: Freeze or unfreeze a UTXO.
      operationId: freeze
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FreezeRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
                title: Response Freeze
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/configget:
    post:
      summary: Config Get
      description: Read a config variable (in-memory override takes priority).
      operationId: configget
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigGetRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigGetResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/configset:
    post:
      summary: Config Set
      description: Set a config variable (in-memory only, not persisted).
      operationId: configsetting
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigSetRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
                title: Response Configsetting
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/rescanblockchain/{blockheight}:
    get:
      summary: Rescan Blockchain
      description: Trigger a blockchain rescan from the given block height.
      operationId: rescanblockchain
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      - name: blockheight
        in: path
        required: true
        schema:
          type: integer
          title: Blockheight
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RescanBlockchainResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/getrescaninfo:
    get:
      summary: Get Rescan Info
      description: Get rescan progress information.
      operationId: getrescaninfo
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RescanInfoResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/signmessage:
    post:
      summary: Sign Message
      description: Sign a message with a wallet key at the given HD path.
      operationId: signmessage
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignMessageRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignMessageResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/yieldgen/report:
    get:
      summary: Yieldgen Report
      description: Return the yield generator CSV report data.
      operationId: yieldgenreport
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/YieldGenReportResponse'
  /api/v1/wallet/{walletname}/taker/direct-send:
    post:
      summary: Direct Send
      description: Send bitcoin directly (without coinjoin).
      operationId: directsend
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DirectSendRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectSendResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/taker/coinjoin:
    post:
      summary: Do Coinjoin
      description: Initiate a coinjoin transaction (asynchronous).
      operationId: docoinjoin
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DoCoinjoinRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/taker/stop:
    get:
      summary: Stop Coinjoin
      description: Stop a running coinjoin/tumbler.
      operationId: stopcoinjoin
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/maker/start:
    post:
      summary: Start Maker
      description: Start the yield generator (maker) service.
      operationId: startmaker
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartMakerRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/maker/stop:
    get:
      summary: Stop Maker
      description: Stop the yield generator (maker) service.
      operationId: stopmaker
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/tumbler/plan:
    post:
      summary: Create Plan
      description: 'Build and persist a fresh tumble plan for the active wallet.


        An already-running plan for the wallet is always protected: callers must

        ``POST /tumbler/stop`` first. A plan in any other state (pending,

        completed, failed, cancelled) is overwritten unconditionally -- passing

        ``force=true`` is only required for a pending plan, to make the

        destructive intent explicit.'
      operationId: tumblerplan
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TumblerPlanRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TumblerPlanResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      summary: Delete Plan Endpoint
      description: Remove a non-running plan from disk.
      operationId: tumblerplandelete
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/tumbler/status:
    get:
      summary: Get Status
      description: 'Return the live plan if the runner is active, otherwise the on-disk plan.


        When the on-disk plan is ``RUNNING`` but no runner is live, the response''s

        ``stale`` flag is set so the UI can prompt the user to acknowledge the

        failure and delete the plan.'
      operationId: tumblerstatus
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TumblerPlanResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/tumbler/start:
    post:
      summary: Start Plan
      description: Load the pending plan and run it in the background.
      operationId: tumblerstart
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/wallet/{walletname}/tumbler/stop:
    post:
      summary: Stop Plan
      description: Cooperatively stop the running plan; transition it to ``CANCELLED``.
      operationId: tumblerstop
      parameters:
      - name: walletname
        in: path
        required: true
        schema:
          type: string
          title: Walletname
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/obwatch/orderbook.json:
    get:
      summary: Get Orderbook
      description: Proxy orderbook data from the orderbook_watcher service.
      operationId: get_orderbook_api_v1_obwatch_orderbook_json_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/v1/obwatch/refreshorderbook:
    get:
      summary: Refresh Orderbook Get
      description: GET compatibility endpoint for orderbook refresh.
      operationId: refresh_orderbook_get_api_v1_obwatch_refreshorderbook_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
    post:
      summary: Refresh Orderbook Post
      description: POST compatibility endpoint for JAM frontend refresh calls.
      operationId: refresh_orderbook_post_api_v1_obwatch_refreshorderbook_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /obwatch/orderbook.json:
    get:
      summary: Get Orderbook
      description: Proxy orderbook data from the orderbook_watcher service.
      operationId: get_orderbook_obwatch_orderbook_json_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /obwatch/refreshorderbook:
    get:
      summary: Refresh Orderbook Get
      description: GET compatibility endpoint for orderbook refresh.
      operationId: refresh_orderbook_get_obwatch_refreshorderbook_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
    post:
      summary: Refresh Orderbook Post
      description: POST compatibility endpoint for JAM frontend refresh calls.
      operationId: refresh_orderbook_post_obwatch_refreshorderbook_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /:
    options:
      summary: Cors Preflight
      operationId: cors_preflight__options
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
components:
  schemas:
    ConfigGetRequest:
      properties:
        section:
          type: string
          title: Section
        field:
          type: string
          title: Field
      type: object
      required:
      - section
      - field
      title: ConfigGetRequest
      description: POST /api/v1/wallet/{walletname}/configget request.
    ConfigGetResponse:
      properties:
        configvalue:
          type: string
          title: Configvalue
      type: object
      required:
      - configvalue
      title: ConfigGetResponse
      description: Response for configget.
    ConfigSetRequest:
      properties:
        section:
          type: string
          title: Section
        field:
          type: string
          title: Field
        value:
          type: string
          title: Value
      type: object
      required:
      - section
      - field
      - value
      title: ConfigSetRequest
      description: POST /api/v1/wallet/{walletname}/configset request.
    CreateWalletRequest:
      properties:
        walletname:
          type: string
          title: Walletname
        password:
          type: string
          title: Password
        wallettype:
          type: string
          title: Wallettype
          default: sw-fb
      type: object
      required:
      - walletname
      - password
      title: CreateWalletRequest
      description: POST /api/v1/wallet/create request.
    CreateWalletResponse:
      properties:
        walletname:
          type: string
          title: Walletname
        seedphrase:
          type: string
          title: Seedphrase
        token:
          type: string
          title: Token
        token_type:
          type: string
          title: Token Type
          default: bearer
        expires_in:
          type: integer
          title: Expires In
          default: 1800
        scope:
          type: string
          title: Scope
          default: ''
        refresh_token:
          type: string
          title: Refresh Token
      type: object
      required:
      - walletname
      - seedphrase
      - token
      - refresh_token
      title: CreateWalletResponse
      description: Response for wallet create and recover.
    DirectSendRequest:
      properties:
        mixdepth:
          type: integer
          title: Mixdepth
        amount_sats:
          type: integer
          title: Amount Sats
        destination:
          type: string
          title: Destination
        txfee:
          anyOf:
          - type: integer
          - type: 'null'
          title: Txfee
      type: object
      required:
      - mixdepth
      - amount_sats
      - destination
      title: DirectSendRequest
      description: POST /api/v1/wallet/{walletname}/taker/direct-send request.
    DirectSendResponse:
      properties:
        txinfo:
          $ref: '#/components/schemas/TxInfo'
      type: object
      required:
      - txinfo
      title: DirectSendResponse
      description: Response for direct-send.
    DoCoinjoinRequest:
      properties:
        mixdepth:
          type: integer
          title: Mixdepth
        amount_sats:
          type: integer
          title: Amount Sats
        counterparties:
          type: integer
          title: Counterparties
        destination:
          type: string
          title: Destination
        txfee:
          anyOf:
          - type: integer
          - type: 'null'
          title: Txfee
      type: object
      required:
      - mixdepth
      - amount_sats
      - counterparties
      - destination
      title: DoCoinjoinRequest
      description: POST /api/v1/wallet/{walletname}/taker/coinjoin request.
    FreezeRequest:
      properties:
        utxo-string:
          type: string
          title: Utxo-String
        freeze:
          type: boolean
          title: Freeze
      type: object
      required:
      - utxo-string
      - freeze
      title: FreezeRequest
      description: 'POST /api/v1/wallet/{walletname}/freeze request.


        Note: the field name uses a hyphen in the reference API JSON.

        We use Field(alias=...) to handle this.'
    GetAddressResponse:
      properties:
        address:
          type: string
          title: Address
      type: object
      required:
      - address
      title: GetAddressResponse
      description: Response for new address / timelock address requests.
    GetInfoResponse:
      properties:
        version:
          type: string
          title: Version
      type: object
      required:
      - version
      title: GetInfoResponse
      description: Response for GET /api/v1/getinfo.
    GetSeedResponse:
      properties:
        seedphrase:
          type: string
          title: Seedphrase
      type: object
      required:
      - seedphrase
      title: GetSeedResponse
      description: Response for GET /api/v1/wallet/{walletname}/getseed.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ListUtxosResponse:
      properties:
        utxos:
          items:
            $ref: '#/components/schemas/UTXOEntry'
          type: array
          title: Utxos
      type: object
      title: ListUtxosResponse
      description: Response for GET /api/v1/wallet/{walletname}/utxos.
    ListWalletsResponse:
      properties:
        wallets:
          items:
            type: string
          type: array
          title: Wallets
      type: object
      title: ListWalletsResponse
      description: Response for GET /api/v1/wallet/all.
    LockWalletResponse:
      properties:
        walletname:
          type: string
          title: Walletname
        already_locked:
          type: boolean
          title: Already Locked
      type: object
      required:
      - walletname
      - already_locked
      title: LockWalletResponse
      description: Response for wallet lock.
    RecoverWalletRequest:
      properties:
        walletname:
          type: string
          title: Walletname
        password:
          type: string
          title: Password
        wallettype:
          type: string
          title: Wallettype
          default: sw-fb
        seedphrase:
          type: string
          title: Seedphrase
      type: object
      required:
      - walletname
      - password
      - seedphrase
      title: RecoverWalletRequest
      description: POST /api/v1/wallet/recover request.
    RescanBlockchainResponse:
      properties:
        walletname:
          type: string
          title: Walletname
      type: object
      required:
      - walletname
      title: RescanBlockchainResponse
      description: Response for rescanblockchain.
    RescanInfoResponse:
      properties:
        rescanning:
          type: boolean
          title: Rescanning
        progress:
          anyOf:
          - type: number
          - type: 'null'
          title: Progress
      type: object
      required:
      - rescanning
      title: RescanInfoResponse
      description: Response for getrescaninfo.
    SessionResponse:
      properties:
        session:
          type: boolean
          title: Session
        maker_running:
          type: boolean
          title: Maker Running
        coinjoin_in_process:
          type: boolean
          title: Coinjoin In Process
        schedule:
          anyOf:
          - items:
              items:
                anyOf:
                - type: string
                - type: integer
                - type: number
              type: array
            type: array
          - type: 'null'
          title: Schedule
        wallet_name:
          type: string
          title: Wallet Name
          default: ''
        offer_list:
          anyOf:
          - items:
              additionalProperties:
                anyOf:
                - type: string
                - type: integer
                - type: number
              type: object
            type: array
          - type: 'null'
          title: Offer List
        nickname:
          anyOf:
          - type: string
          - type: 'null'
          title: Nickname
        rescanning:
          type: boolean
          title: Rescanning
          default: false
        block_height:
          anyOf:
          - type: integer
          - type: 'null'
          title: Block Height
      type: object
      required:
      - session
      - maker_running
      - coinjoin_in_process
      title: SessionResponse
      description: Response for GET /api/v1/session.
    SignMessageRequest:
      properties:
        hd_path:
          type: string
          title: Hd Path
        message:
          type: string
          title: Message
      type: object
      required:
      - hd_path
      - message
      title: SignMessageRequest
      description: POST /api/v1/wallet/{walletname}/signmessage request.
    SignMessageResponse:
      properties:
        signature:
          type: string
          title: Signature
        message:
          type: string
          title: Message
        address:
          type: string
          title: Address
      type: object
      required:
      - signature
      - message
      - address
      title: SignMessageResponse
      description: Response for signmessage.
    StartMakerRequest:
      properties:
        txfee:
          type: string
          title: Txfee
        cjfee_a:
          type: string
          title: Cjfee A
        cjfee_r:
          type: string
          title: Cjfee R
        ordertype:
          type: string
          title: Ordertype
        minsize:
          type: string
          title: Minsize
      type: object
      required:
      - txfee
      - cjfee_a
      - cjfee_r
      - ordertype
      - minsize
      title: StartMakerRequest
      description: 'POST /api/v1/wallet/{walletname}/maker/start request.


        All fields are strings per the reference implementation.'
    TokenRequest:
      properties:
        grant_type:
          type: string
          title: Grant Type
        refresh_token:
          type: string
          title: Refresh Token
      type: object
      required:
      - grant_type
      - refresh_token
      title: TokenRequest
      description: POST /api/v1/token request.
    TokenResponse:
      properties:
        walletname:
          type: string
          title: Walletname
          default: ''
        token:
          type: string
          title: Token
        token_type:
          type: string
          title: Token Type
          default: bearer
        expires_in:
          type: integer
          title: Expires In
          default: 1800
        scope:
          type: string
          title: Scope
          default: ''
        refresh_token:
          type: string
          title: Refresh Token
      type: object
      required:
      - token
      - refresh_token
      title: TokenResponse
      description: Token issuance response (used by create, unlock, recover, refresh).
    TumblerPhaseResponse:
      properties:
        kind:
          type: string
          title: Kind
        index:
          type: integer
          title: Index
        status:
          type: string
          title: Status
        wait_seconds:
          type: number
          title: Wait Seconds
        started_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Started At
        finished_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Finished At
        error:
          anyOf:
          - type: string
          - type: 'null'
          title: Error
        mixdepth:
          anyOf:
          - type: integer
          - type: 'null'
          title: Mixdepth
        amount:
          anyOf:
          - type: integer
          - type: 'null'
          title: Amount
        amount_fraction:
          anyOf:
          - type: number
          - type: 'null'
          title: Amount Fraction
        counterparty_count:
          anyOf:
          - type: integer
          - type: 'null'
          title: Counterparty Count
        destination:
          anyOf:
          - type: string
          - type: 'null'
          title: Destination
        rounding:
          anyOf:
          - type: integer
          - type: 'null'
          title: Rounding
        txid:
          anyOf:
          - type: string
          - type: 'null'
          title: Txid
        txids:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Txids
        completed_count:
          anyOf:
          - type: integer
          - type: 'null'
          title: Completed Count
        cj_count:
          anyOf:
          - type: integer
          - type: 'null'
          title: Cj Count
        duration_seconds:
          anyOf:
          - type: number
          - type: 'null'
          title: Duration Seconds
        target_cj_count:
          anyOf:
          - type: integer
          - type: 'null'
          title: Target Cj Count
        cj_served:
          anyOf:
          - type: integer
          - type: 'null'
          title: Cj Served
      type: object
      required:
      - kind
      - index
      - status
      - wait_seconds
      title: TumblerPhaseResponse
      description: A single phase rendered for the API. Keeps the discriminator flat.
    TumblerPlanRequest:
      properties:
        destinations:
          items:
            type: string
          type: array
          minItems: 1
          title: Destinations
        parameters:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Parameters
        force:
          type: boolean
          title: Force
          default: false
      type: object
      required:
      - destinations
      title: TumblerPlanRequest
      description: 'POST /api/v1/wallet/{walletname}/tumbler/plan request.


        Destinations are the external bitcoin addresses the tumble should

        ultimately sweep funds to; order is significant (first destination

        maps to the first non-empty landing mixdepth). ``parameters`` lets

        the caller override the builder defaults; omit for sensible knobs.

        ``force`` overrides a pending-only plan on disk; plans that are

        ``RUNNING`` in the daemon are always protected (stop first).'
    TumblerPlanResponse:
      properties:
        plan_id:
          type: string
          title: Plan Id
        wallet_name:
          type: string
          title: Wallet Name
        status:
          type: string
          title: Status
        destinations:
          items:
            type: string
          type: array
          title: Destinations
        current_phase:
          type: integer
          title: Current Phase
        phases:
          items:
            $ref: '#/components/schemas/TumblerPhaseResponse'
          type: array
          title: Phases
        created_at:
          type: string
          title: Created At
        updated_at:
          type: string
          title: Updated At
        error:
          anyOf:
          - type: string
          - type: 'null'
          title: Error
        stale:
          type: boolean
          title: Stale
          default: false
      type: object
      required:
      - plan_id
      - wallet_name
      - status
      - destinations
      - current_phase
      - phases
      - created_at
      - updated_at
      title: TumblerPlanResponse
      description: Response body returned by tumbler plan / status endpoints.
    TxInfo:
      properties:
        hex:
          type: string
          title: Hex
        inputs:
          items:
            $ref: '#/components/schemas/TxInput'
          type: array
          title: Inputs
        outputs:
          items:
            $ref: '#/components/schemas/TxOutput'
          type: array
          title: Outputs
        txid:
          type: string
          title: Txid
        nLockTime:
          type: integer
          title: Nlocktime
          default: 0
        nVersion:
          type: integer
          title: Nversion
          default: 2
      type: object
      required:
      - hex
      - txid
      title: TxInfo
      description: Full transaction information.
    TxInput:
      properties:
        outpoint:
          type: string
          title: Outpoint
        scriptSig:
          type: string
          title: Scriptsig
          default: ''
        nSequence:
          type: integer
          title: Nsequence
          default: 4294967295
        witness:
          type: string
          title: Witness
          default: ''
      type: object
      required:
      - outpoint
      title: TxInput
      description: A transaction input.
    TxOutput:
      properties:
        value_sats:
          type: integer
          title: Value Sats
        scriptPubKey:
          type: string
          title: Scriptpubkey
        address:
          type: string
          title: Address
      type: object
      required:
      - value_sats
      - scriptPubKey
      - address
      title: TxOutput
      description: A transaction output.
    UTXOEntry:
      properties:
        utxo:
          type: string
          title: Utxo
        address:
          type: string
          title: Address
        path:
          type: string
          title: Path
        label:
          type: string
          title: Label
          default: ''
        value:
          type: integer
          title: Value
        tries:
          type: integer
          title: Tries
          default: 0
        tries_remaining:
          type: integer
          title: Tries Remaining
          default: 3
        external:
          type: boolean
          title: External
          default: false
        mixdepth:
          type: integer
          title: Mixdepth
        confirmations:
          type: integer
          title: Confirmations
        frozen:
          type: boolean
          title: Frozen
          default: false
      type: object
      required:
      - utxo
      - address
      - path
      - value
      - mixdepth
      - confirmations
      title: UTXOEntry
      description: A single UTXO in the listutxos response.
    UnlockWalletRequest:
      properties:
        password:
          type: string
          title: Password
      type: object
      required:
      - password
      title: UnlockWalletRequest
      description: POST /api/v1/wallet/{walletname}/unlock request.
    UnlockWalletResponse:
      properties:
        walletname:
          type: string
          title: Walletname
        token:
          type: string
          title: Token
        token_type:
          type: string
          title: Token Type
          default: bearer
        expires_in:
          type: integer
          title: Expires In
          default: 1800
        scope:
          type: string
          title: Scope
          default: ''
        refresh_token:
          type: string
          title: Refresh Token
      type: object
      required:
      - walletname
      - token
      - refresh_token
      title: UnlockWalletResponse
      description: Response for wallet unlock.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    WalletDisplayAccount:
      properties:
        account:
          type: string
          title: Account
        account_balance:
          type: string
          title: Account Balance
        available_balance:
          type: string
          title: Available Balance
          default: '0.00000000'
        branches:
          items:
            $ref: '#/components/schemas/WalletDisplayBranch'
          type: array
          title: Branches
      type: object
      required:
      - account
      - account_balance
      title: WalletDisplayAccount
      description: A single account (mixdepth) in the wallet display.
    WalletDisplayBranch:
      properties:
        branch:
          type: string
          title: Branch
        balance:
          type: string
          title: Balance
        available_balance:
          type: string
          title: Available Balance
          default: '0.00000000'
        entries:
          items:
            $ref: '#/components/schemas/WalletDisplayEntry'
          type: array
          title: Entries
      type: object
      required:
      - branch
      - balance
      title: WalletDisplayBranch
      description: A branch (external/internal/bond) within an account.
    WalletDisplayEntry:
      properties:
        hd_path:
          type: string
          title: Hd Path
        address:
          type: string
          title: Address
        amount:
          type: string
          title: Amount
        available_balance:
          type: string
          title: Available Balance
          default: '0.00000000'
        status:
          type: string
          title: Status
          default: ''
        label:
          type: string
          title: Label
          default: ''
        extradata:
          type: string
          title: Extradata
          default: ''
      type: object
      required:
      - hd_path
      - address
      - amount
      title: WalletDisplayEntry
      description: A single address entry in the wallet display.
    WalletDisplayResponse:
      properties:
        walletname:
          type: string
          title: Walletname
        walletinfo:
          $ref: '#/components/schemas/WalletInfo'
      type: object
      required:
      - walletname
      - walletinfo
      title: WalletDisplayResponse
      description: Response for GET /api/v1/wallet/{walletname}/display.
    WalletInfo:
      properties:
        wallet_name:
          type: string
          title: Wallet Name
          default: JM wallet
        total_balance:
          type: string
          title: Total Balance
          default: '0.00000000'
        available_balance:
          type: string
          title: Available Balance
          default: '0.00000000'
        accounts:
          items:
            $ref: '#/components/schemas/WalletDisplayAccount'
          type: array
          title: Accounts
      type: object
      title: WalletInfo
      description: The walletinfo object within the display response.
    YieldGenReportResponse:
      properties:
        yigen_data:
          items:
            type: string
          type: array
          title: Yigen Data
      type: object
      title: YieldGenReportResponse
      description: Response for yieldgen/report.
