openapi: 3.0.3
info:
  version: 8.20.0
  title: Flux Decentralized Cloud API
  termsOfService: 'https://cdn.runonflux.io/Flux_Terms_of_Service.pdf'
  contact:
    name: 'InFlux Technologies USA LLC — Flux Development Team'
    email: development@runonflux.com
    url: 'https://docs.runonflux.com'
  license:
    name: GNU AGPLv3
    url: 'https://www.gnu.org/licenses/agpl-3.0.en.html'
  description: |-
    # Flux API Documentation
    
    Welcome to the comprehensive API reference for **Flux**, the world's leading decentralized Web3 cloud computing platform. This documentation covers all available API endpoints for interacting with the Flux network, nodes, and decentralized applications.
    
    
    ## About Flux
    
    **Flux** is a decentralized Web3 cloud infrastructure powered by globally distributed, user-operated nodes. Built for scalability and censorship resistance, Flux eliminates single points of failure while providing enterprise-grade computing resources for deploying and managing applications.
    
    
    ### Key Features
    
    - **🌐 Decentralized Infrastructure**: ~6,400 confirmed FluxNodes worldwide providing 52,000+ CPU cores, 170TB+ RAM and 3PB+ SSD storage across three tiers (Cumulus, Nimbus, Stratus)
    - **⚡ High Performance**: Enterprise-grade computing with automatic placement, fault-domain spreading and high availability
    - **🔐 Secure by Design**: Multiple authentication methods, enterprise app encryption and runtime tampering detection
    - **💰 Cost Effective**: Competitive pricing compared to traditional cloud providers
    - **🚀 Developer Friendly**: Docker-based deployments with comprehensive API support
    - **🛡️ ArcaneOS**: Hardened, attested node operating system with hardware-backed key custody

    *Network figures are a live snapshot; query `GET /daemon/getfluxnodecount` or
    [stats.runonflux.io](https://stats.runonflux.io) for current totals.*
    
    
    ## API Architecture
    
    The Flux API uses a **seven-level permission model** to ensure secure and controlled access. Every endpoint in this document ends its description with the level it requires:
    
    | Permission Level | Description | Authentication Required |
    |------------------|-------------|-------------------------|
    | **Public** | Open access endpoints | ❌ No |
    | **User** (`user`) | Any FluxID with a valid signature and a live session | ✅ Yes |
    | **FluxTeam** (`fluxteam`) | Flux Team and Flux Support identities | ✅ Yes |
    | **Admin** (`admin`) | The operator of *this* node (`initial.zelid` in its config) | ✅ Yes |
    | **AdminAndFluxTeam** (`adminandfluxteam`) | Node operator **or** Flux Team | ✅ Yes |
    | **AppOwner** (`appowner`) | The FluxID that registered the application | ✅ Yes |
    | **AppOwnerAbove** (`appownerorfluxteam`) | Application owner **or** Flux Team | ✅ Yes |

    Every privilege is a set of identities and asks whether the caller is one of
    them — the compounds read **OR**, never AND. `admin` is a hardware role: the
    node operator administers the machine and is *not* a party to a customer's
    application, so app verbs (`appstart`, `appremove`, `appkill`, `redeploy`, …)
    require **AppOwnerAbove** rather than Admin.
    
    
    ### Request Methods
    
    - **GET**: Most endpoints support GET requests with parameters as query strings or path variables
    - **POST**: Used for endpoints requiring large payloads or sensitive data
    - **WebSocket**: Used for real-time communication and simplified authentication flows
    
    
    ## Supported Wallet Authentication
    
    Flux supports multiple modern authentication methods for maximum flexibility and security:
    
    
    ### 🛡️ SSP Wallet
    
    **Secure, Simple, Powerful** - The next-generation 2FA wallet with enterprise security:
    
    - **True 2-of-2 Multi-Signature**: Requires both browser extension and mobile app authorization
    - **Advanced Security**: BIP48 derivation, Account Abstraction (ERC-4337), Schnorr signatures
    - **Multi-Chain Support**: Bitcoin, Ethereum, Polygon, BSC, Avalanche, and 15+ blockchains
    - **WalletConnect v2**: Connect to thousands of dApps seamlessly
    - **Professional Audit**: Thoroughly audited by security experts in 2025
    
    **Installation**:
    - Chrome Extension: [SSP Wallet - Chrome Web Store](https://chromewebstore.google.com/detail/ssp-wallet/mgfbabcnedcejkfibpafadgkhmkifhbd)
    - Mobile App: Available on iOS App Store and Google Play Store
    - Website: [sspwallet.io](https://sspwallet.io)
    
    
    ### 🔑 ZelCore Wallet
    
    **Multi-Asset Cryptocurrency Wallet** - The original Flux ecosystem wallet:
    
    - **Self-Custodial**: Full control over your private keys
    - **Decentralized 2FA (d2FA)**: Unique blockchain-based two-factor authentication
    - **Multi-Chain**: Support for 80+ blockchains and thousands of assets
    - **Hardware Integration**: Connect with hardware wallets for enhanced security
    - **Deep Linking**: Native `zel:` protocol support
    
    **Installation**: [zelcore.io](https://zelcore.io)
    
    
    ### 🦊 MetaMask Integration
    
    **Ethereum Ecosystem Wallet** - Popular browser extension wallet:
    
    - **Ethereum Native**: Full Ethereum and EVM chain support
    - **Sign-In with Ethereum (SIWE)**: ERC-4361 standard compliance
    - **Wide Adoption**: Most popular Web3 wallet with extensive dApp support
    - **Domain Binding**: Advanced phishing protection
    
    **Installation**: [metamask.io](https://metamask.io)
    
    
    ### 🔗 WalletConnect v2
    
    **Universal Wallet Connection Protocol** - Connect any compatible wallet:
    
    - **700+ Wallets**: Support for hundreds of popular wallets
    - **Cross-Platform**: Mobile, desktop, and web wallet compatibility
    - **Secure Bridge**: Encrypted communication between wallet and dApp
    - **QR Code Connection**: Simple mobile wallet connection
    
    
    ### 📧 Traditional Authentication
    
    **Email-Based Login** - For users preferring traditional authentication:
    
    - **Firebase Integration**: Google Firebase authentication backend
    - **Email/Password**: Standard username/password login
    - **Google OAuth**: Sign in with Google account
    - **Account Recovery**: Standard password reset flows
    
    
    ## Getting Started
    
    Follow these steps to start using the Flux API:
    
    
    ### 1. Choose Your Authentication Method
    
    Select from the supported wallet options above based on your development needs and user preferences. All methods are supported by the FluxOS API.
    
    
    ### 2. Set Up Your Wallet
    
    Install and configure your chosen wallet:
    - Download from official sources only
    - Secure your seed phrase or recovery information
    - Enable two-factor authentication where available
    - Test with small amounts first
    
    
    ### 3. Obtain Authentication Credentials
    
    Follow the **Authentication** section in this API documentation to:
    - Generate login phrases
    - Sign authentication messages
    - Obtain session tokens
    - Set up API headers
    
    
    ### 4. Configure API Headers

    Authenticated requests carry a single `zelidauth` header. It is a
    **URL-encoded query string**, not JSON:

    ```
    zelidauth: zelid=<address>&signature=<urlencoded-signature>&loginPhrase=<phrase>
    ```

    A complete example:

    ```
    zelidauth: zelid=1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC&signature=H%2BZB3oSrsw6XkBxxlbwk33LEBJYvqtbMIm2kL9JzuoXMC6pSZd0lBHdnhJYzMTXv81zZQ7G%2FpkK1NvYN7cNF0GE%3D&loginPhrase=1574991374806spbcvsuwerl52tppx9dw5khuz8rew13mkq86gg8r2c
    ```

    **Signatures are base64 and routinely contain `+`, `/` and `=`** — all three
    change meaning inside a query string, so the signature must be URL-encoded or
    the request will be refused as unauthentic.
    
    
    ### 5. Start Making API Calls
    
    Test your setup with public endpoints first, then proceed to authenticated endpoints once your credentials are properly configured.
    
    
    ## AI Agents and MCP

    **Flux Cloud MCP** is an [MCP](https://modelcontextprotocol.io) server that lets AI agents use Flux Cloud through this API: quote an app in US dollars, deploy it, pay for it, watch it come up, read its logs, update it and cancel it. It works with Claude, ChatGPT, Cursor, VS Code, Windsurf and other MCP hosts. Source: [RunOnFlux/flux-cloud-mcp](https://github.com/RunOnFlux/flux-cloud-mcp).

    **Hosted, nothing to install.** Add it as a remote MCP server (Streamable HTTP):

    ```
    https://mcp.runonflux.com/mcp
    ```

    In Claude Code: `claude mcp add --transport http flux-cloud https://mcp.runonflux.com/mcp`. In VS Code and Cursor, use **Connect MCP** at the bottom of the sidebar.

    The hosted server holds no keys. Read-only tools need none; tools that sign or pay take the keys as call arguments, used for that call only and never stored. Create a dedicated pair with `flux_generate_keys` and fund it with only what a deployment needs.

    **Local, keys stay on your machine.** For larger budgets, run the server locally:

    ```bash
    claude mcp add flux-cloud -s user \
      -e FLUX_ID_PRIVATE_KEY=<wif> -e FLUX_PAYMENT_PRIVATE_KEY=<wif> \
      -- npx -y @runonflux/flux-cloud-mcp
    ```

    **Any other AI tool** can read this reference as [markdown](https://docs.runonflux.io/fluxapi.md), listed in [llms.txt](https://docs.runonflux.io/llms.txt).


    ## Support & Community
    
    - **Documentation**: [docs.runonflux.com](https://docs.runonflux.com)
    - **Discord Community**: [discord.gg/runonflux](https://discord.gg/runonflux)
    - **GitHub**: [github.com/RunOnFlux](https://github.com/RunOnFlux)
    - **Twitter/X**: [@RunOnFlux](https://x.com/runonflux)
    - **Website**: [runonflux.com](https://runonflux.com)


    ---


    FluxOS is free software published under the GNU AGPLv3. Flux, FluxOS,
    FluxNode and ArcaneOS are projects of **InFlux Technologies USA LLC**.
    © 2026 InFlux Technologies USA LLC.
    
    
    **🚀 Ready to build on the decentralized web? Let's get started!**
    
    
    ## Important Notes

    - Login phrases expire after 15 minutes
    - Session tokens are valid for up to 14 days
    - Always use HTTPS in production environments
    - Signature values must be URL-encoded inside the `zelidauth` header


    ## Response Envelope & Error Handling

    **This is the single most important thing to know about the Flux API.**

    A request that reaches a handler is answered **at HTTP 200**, in the body —
    *including when the answer is a failure*:

    ```json
    { "status": "success", "data": { ... } }
    { "status": "error",   "data": { "code": 401, "name": "Unauthorized", "message": "..." } }
    ```

    The `code` inside an error body is a **FluxOS code, not a wire status**. A
    removed endpoint answers HTTP 200 with `data.code: 410`; an unauthorised call
    answers HTTP 200 with `data.code: 401`. A client that branches on
    `response.ok` or `response.status` will read every one of these as a success.

    ```javascript
    const res = await fetch(url, { headers: { zelidauth } });
    const body = await res.json();
    if (body.status !== 'success') {      // <- the check that matters
      throw new Error(body.data?.message ?? 'Flux API error');
    }
    ```

    The in-band shape exists so that a transport failure cannot impersonate a
    service answer. Wire statuses are therefore reserved for refusals that happen
    **before** a handler runs, and for a handful of endpoints that deliberately
    speak HTTP semantics:

    | Status | Where it comes from |
    |--------|---------------------|
    | `403` | `requireHttps` — an ArcaneOS endpoint reached over plain HTTP |
    | `503` / `400` | route guards — the node has not finished booting, has not yet obtained the network policy (routes that pull images), or query parameters were sent to a route that rejects them |
    | `413` | a request body too large to accept |
    | `404` | a resource that does not exist to be addressed (an unknown operation id, a stream that is not enabled) |
    | `202` | an endpoint that started long-running work — see below |

    Endpoints that use wire statuses say so in their own `responses` section.
    Everything else answers 200 and puts the outcome in `status`.

    **Request bodies.** Every `POST` under `/daemon`, `/benchmark`, `/id` and
    `/zelid` reads the raw body itself and parses it as JSON. Send that JSON
    with `Content-Type: text/plain` (any type other than `application/json`
    works): FluxOS mounts a JSON body parser that consumes `application/json`
    bodies before these handlers run, and such a request is never answered.


    ## Long-Running Operations

    Work whose duration scales with the data — copying, compressing or extracting
    inside an application volume — does not block the request. It answers
    **`202 Accepted`** with a `jobId`, a `Location` header pointing at the status
    resource and a `Retry-After` header:

    ```json
    { "status": "success",
      "data": { "jobId": "op_2f8f...", "statusUrl": "/apps/operations/op_2f8f...", "status": "Running" } }
    ```

    Poll `GET /apps/operations/{jobId}` until `data.status` reaches a terminal
    value. **Completion is read from that field, never from the HTTP code** — a
    failed operation is still a successful poll.

    | `status` | Meaning |
    |----------|---------|
    | `Running` | still working; respect `Retry-After` |
    | `Succeeded` | finished |
    | `Failed` | the work could not be done — `error` carries an RFC 9457 problem object |
    | `Canceled` | the caller asked for it via `DELETE /apps/operations/{jobId}` |
    | `Evicted` | the node took the work away — neither the caller's request nor their input was at fault |

    Cancellation is **best effort**: the flag is raised and the worker stops at
    its next checkpoint, so `status` stays `Running` until it does.

    Unknown, expired and not-yours are one answer (`404`) — a `jobId` must not
    reveal whether someone else has an operation running.


    ## Node-Scoped vs Network-Scoped Calls

    Every endpoint in this specification is served by **an individual FluxNode**.
    The `https://api.runonflux.io` gateway load-balances across confirmed nodes,
    so it is the right target for network-wide data (blockchain state, global
    application specifications, node lists) and the wrong target for anything
    that reports or changes the state of one machine.

    Call a specific node directly — `https://<node-ip>:16127` — for:

    - node status, benchmark, tier, DOS state, clock drift, peers, topology
    - the applications installed *on that node*, their logs, monitoring and volumes
    - anything marked **Admin** or **AdminAndFluxTeam**, which is authorised
      against *that node's* operator FluxID
    - the FluxShare, Syncthing, backup/restore and volume-browser surfaces

    Node API calls are **not rate-limited by FluxOS itself**. The public gateway
    may apply its own limits.


    ## Deprecated & Removed Endpoints

    Endpoints marked `deprecated` in this document still work; endpoints
    described as **Removed** answer an error body with `code: 410`.

    | Kind | Endpoints |
    |------|-----------|
    | **Removed** (answer `code: 410`) | `/apps/apppause`, `/apps/appunpause`, `/apps/appmonitorstream`, `/apps/startmonitoring`, `/apps/stopmonitoring` |
    | **Deleted** (no longer routed) | `/flux/cruxid`, `/flux/adjustcruxid`, `/flux/rebuildhome`, `/explorer/fluxtxs`, `/apps/installtemporarylocalapp`, `POST /apps/fluxshare/upload` |
    | **Deleted in 8.19.0** | The daemon's wallet and shielded-pool RPCs; Syncthing's proxied read, debug, event and control routes; FluxShare upload, share, rename and delete; `/flux/blockedports`, `/flux/blockedrepositories` and their `adjust…` routes. See API Version Information. |
    | **Renamed** | `/flux/rebuildhome` → `/flux/rebuildui` |
    | **Aliases** | every `/zelid/*` route aliases the matching `/id/*` route; every `/daemon/*zelnode*` route aliases its `*fluxnode*` counterpart; `/flux/zelid` aliases `/flux/id`; `/benchmark/signzelnodetransaction` aliases `/benchmark/signfluxnodetransaction`; `/flux/broadcastmessageto{outgoing,incoming}` both delegate to `/flux/broadcastmessage` |
    
    
    ## Authentication Workflows
    
    
    ### 🔐 Complete Authentication Flow
    
    **Step 1: Get Login Phrase**
    ```bash
    curl -X GET "https://api.runonflux.io/id/loginphrase"
    ```
    
    **Step 2: Sign the Login Phrase**
    - **SSP Wallet**: Use browser extension + mobile app to sign the message
    - **ZelCore**: Use the wallet's message signing feature  
    - **MetaMask**: Use `personal_sign` method
    - **Hardware Wallet**: Sign via hardware device integration
    
    **Step 3: Verify Login** 
    ```bash
    curl -X POST "https://api.runonflux.io/id/verifylogin" \
      -H "Content-Type: text/plain" \
      -d '{
        "zelid": "your-wallet-address",
        "loginPhrase": "phrase-from-step-1", 
        "signature": "your-signature-from-step-2"
      }'
    ```
    
    **Step 4: Use Authentication Header**
    ```bash
    curl -X GET "https://api.runonflux.io/id/loggedsessions" \
      -H "zelidauth: zelid=your-address&signature=your-signature&loginPhrase=your-phrase"
    ```
    
    
    ### 📱 SSP Wallet Integration Guide
    
    **Browser Extension Setup:**
    1. Install SSP Wallet Chrome Extension
    2. Install SSP Key mobile app (iOS/Android)
    3. Pair devices using QR code
    4. Fund wallet with small amount for testing
    
    **Signing Messages with SSP:**
    ```javascript
    // Connect to SSP Wallet
    if (window.ssp) {
      const accounts = await window.ssp.request({
        method: 'wallet_requestPermissions',
        params: [{ wallet_accounts: {} }]
      });
      
      // Sign login phrase
      const signature = await window.ssp.request({
        method: 'personal_sign',
        params: [loginPhrase, accounts[0]]
      });
    }
    ```
    
    
    ### 🦊 MetaMask Integration Guide
    
    **Connect and Sign:**
    ```javascript
    // Connect MetaMask
    const accounts = await ethereum.request({
      method: 'eth_requestAccounts'
    });
    
    // Sign login phrase
    const signature = await ethereum.request({
      method: 'personal_sign',
      params: [loginPhrase, accounts[0]]
    });
    
    // Use Ethereum address as zelid
    const zelid = accounts[0];
    ```
    
    
    ### 🔑 ZelCore Wallet Integration
    
    **Deep Link Integration:**
    ```javascript
    // Generate ZelCore deep link for signing
    const zelcoreUrl = `zel:?action=sign&message=${encodeURIComponent(loginPhrase)}&icon=https://yourapp.com/icon.png&callback=${encodeURIComponent('https://yourapp.com/auth/callback')}`;
    
    // Open ZelCore for signing
    window.location.href = zelcoreUrl;
    ```
    
    **WebSocket Integration:**
    ```javascript
    // Listen for ZelCore signature via WebSocket
    const ws = new WebSocket(`wss://api.runonflux.io/ws/id/${loginPhrase}`);
    
    ws.onmessage = (event) => {
      const authData = JSON.parse(event.data);
      if (authData.status === 'success') {
        // Authentication successful
        console.log('Signed in with FluxID:', authData.data.zelid);
      }
    };
    ```
    
    
    ### 🔗 WalletConnect v2 Integration
    
    **Setup WalletConnect:**
    ```javascript
    import { SignClient } from '@walletconnect/sign-client';
    
    const signClient = await SignClient.init({
      projectId: 'your-walletconnect-project-id',
      metadata: {
        name: 'Your Flux App',
        description: 'Flux Network Integration',
        url: 'https://yourapp.com',
        icons: ['https://yourapp.com/logo.png']
      }
    });
    
    // Connect to wallet
    const { uri, approval } = await signClient.connect({
      requiredNamespaces: {
        eip155: {
          methods: ['personal_sign'],
          chains: ['eip155:1'],
          events: ['chainChanged', 'accountsChanged']
        }
      }
    });
    
    // Sign message when connected
    const signature = await signClient.request({
      topic: session.topic,
      chainId: 'eip155:1',
      request: {
        method: 'personal_sign',
        params: [loginPhrase, address]
      }
    });
    ```
    
    
    ### 📧 Traditional Email Authentication
    
    **Firebase Integration:**
    ```javascript
    import { getAuth, signInWithEmailAndPassword } from 'firebase/auth';
    
    // Email/password login
    const auth = getAuth();
    const userCredential = await signInWithEmailAndPassword(auth, email, password);
    
    // Get ID token for API authentication
    const idToken = await userCredential.user.getIdToken();
    
    // Use token in API calls
    fetch('https://api.runonflux.io/protected-endpoint', {
      headers: {
        'Authorization': `Bearer ${idToken}`,
        'Content-Type': 'application/json'
      }
    });
    ```
    
    
    ### ⚠️ Common Integration Issues
    
    **Login Phrase Expiration:**
    ```javascript
    // Always check phrase timestamp
    const phraseTimestamp = parseInt(loginPhrase.substring(0, 13));
    const now = Date.now();
    const age = now - phraseTimestamp;
    
    if (age > 15 * 60 * 1000) { // 15 minutes
      throw new Error('Login phrase expired, get a new one');
    }
    ```
    
    **Signature URL Encoding:**
    ```javascript
    // Always URL encode signatures for headers
    const encodedSignature = encodeURIComponent(signature);
    const authHeader = `zelid=${zelid}&signature=${encodedSignature}&loginPhrase=${loginPhrase}`;
    ```
    
    **Error Handling:**
    ```javascript
    try {
      const response = await fetch('/api/authenticated-endpoint', {
        headers: { 'zelidauth': authHeader }
      });
      
      if (response.status === 401) {
        // Re-authenticate user
        redirectToLogin();
      }
    } catch (error) {
      console.error('API call failed:', error);
    }
    ```
    
    
    ## API Version Information
    
    **Current Version**: 8.20.0

    **Version Notes**:
    - All endpoints documented in this specification are available in FluxOS **8.20.0**
    - This documentation reflects the current stable API implementation and is generated against `ZelBack/src/routes.js` of the [Flux repository](https://github.com/runonflux/flux)
    - For the latest changes and updates, refer to the [Flux GitHub repository](https://github.com/runonflux/flux)

    **Changes in 8.19.0 and 8.20.0**

    | Area | What changed |
    |------|--------------|
    | **Wallet RPCs** | A fluxnode has no wallet, so FluxOS no longer routes the daemon's wallet and shielded-pool RPCs (balances, sending, signing, key import and export, `z_*`). Raw transactions can still be created, decoded and broadcast. |
    | **Syncthing** | FluxOS no longer proxies Syncthing's REST API: its read, debug, event and control routes are gone. The configuration and database `POST`s, `/syncthing/deviceid`, the metrics and the peer diagnostics remain. |
    | **FluxShare** | A node is no longer a personal file host: upload, share, rename and delete are gone, and so is the share-token link. The operator can still list and download what a node holds with `/apps/fluxshare/getfolder` and `/apps/fluxshare/getfile`. |
    | **Blocked ports and repositories** | The operator's lists are retired with their routes; the signed network policy carries the blocked lists. |
    | **Network policy** | Routes that pull images (`installapplocally`, `testappinstall`, `redeploy`, `redeploycomponent`) answer `503` until the node holds the signed network policy, and `/flux/enterpriseappowners` reads its owners from it. |
    | **Node fitness** | `GET /flux/health` is new: the checks that also gate `GET /id/loginphrase`. Syncthing refuses a phrase only on a node whose Syncthing FluxOS supervises, once it is measured unhealthy. |
    | **Payments** | `/payment/*` is a relay between a page and the wallet it opens: the transaction id the wallet posts goes to the waiting page, and nothing is verified or recorded. |
    | **Privileges** | The Flux team can restart FluxOS (`/flux/restart`: **AdminAndFluxTeam**); backup routes only reach the named application's own volume. |
    | **Syncthing folders** | `POST /apps/promotedfolders` is new: what each receive-only folder holds, so peers elect the node that holds the data. |
    | **Pricing** (8.20.0) | Synced (`g:`) applications pay the full price, and USD prices end in .49 or .99. |
    | **Volume files** (8.20.0) | `POST /apps/compressobject` archives a list of entries. |

    **Notable changes since 6.6.x**

    | Area | What changed |
    |------|--------------|
    | **Long-running operations** | Volume and file operations no longer block the request. They return a `jobId`; poll `GET /apps/operations/{jobId}` and cancel with `DELETE /apps/operations/{jobId}`. |
    | **Volume file management** | `POST /apps/moveobject`, `/apps/copyobject`, `/apps/compressobject` and `/apps/extractobject` operate inside an application's persistent volume. |
    | **Placement** | `POST /apps/placementfeasibility` answers whether a prospective specification can be placed, and `GET /apps/placementlocations` publishes the live node/fault-domain/tier geography. |
    | **Network observability** | `GET /flux/topology`, `/flux/networkhealth`, `/flux/peerhistory`, `/flux/unstablenodes`, `/flux/peers` and the SSE `GET /flux/eventstream`. |
    | **Tampering detection** | `GET /apps/tamperingevents` reports containers whose running image no longer matches the registered specification. |
    | **ArcaneOS** | `GET /arcane/authchallenge` and `POST /arcane/configsync` for hardware-attested node configuration. Available only on ArcaneOS nodes. |
    | **Syncthing** | Metrics, health summary, metrics history and peer sync diagnostics endpoints, plus the full configuration write surface. |
    | **Deprecations** | Every `/zelid/*` route is a deprecated alias of the matching `/id/*` route, and every `/daemon/*zelnode*` route a deprecated alias of its `*fluxnode*` counterpart. `/flux/cruxid`, `/flux/adjustcruxid`, `/flux/rebuildhome`, `/explorer/fluxtxs` and `/apps/installtemporarylocalapp` were removed. |
    
externalDocs:
  description: Flux Documentation & Resources Hub
  url: 'https://docs.runonflux.com'
tags:
  - name: Authentication
    description: >-
      **Authentication & Authorization Endpoints**
      
      Essential API endpoints for secure authentication and authorization with the Flux network. 
      These endpoints handle login phrase generation, message signing verification, and session 
      management for all supported wallet types including SSP Wallet, ZelCore, MetaMask, and 
      WalletConnect integrations.
      
      **Key Features:**
      - Multi-wallet authentication support
      - Secure login phrase generation
      - Cryptographic signature verification 
      - Session token management
      - 5-tier permission system integration
      
  - name: ID
    description: >-
      **Identity & User Management**
      
      Comprehensive identity management endpoints that handle user authentication, authorization 
      levels, and identity verification across multiple blockchain addresses (Bitcoin P2PKH, 
      Ethereum, FluxID). These endpoints manage user sessions, permissions, and access control 
      throughout the Flux ecosystem.
      
      **Supported Address Types:**
      - Bitcoin P2PKH addresses
      - Ethereum addresses  
      - FluxID addresses
      - Multi-signature addresses
      
  - name: Daemon
    description: >-
      **Flux Daemon Operations**
      
      Core blockchain daemon endpoints for interacting with the underlying Flux blockchain node.
      These endpoints provide access to blockchain data, mining information,
      network statistics, and node management functions. Essential for node operators and 
      developers building blockchain-integrated applications.
      A fluxnode has no wallet: FluxOS exposes no wallet or shielded-pool RPCs (removed in 8.19.0).
      
      **Core Functions:**
      - Blockchain state queries
      - Raw transaction creation, decoding and broadcasting
      - Network information
      - Mining and staking operations
      
  - name: Benchmark
    description: >-
      **Node Performance & Benchmarking**
      
      Endpoints for monitoring and managing Flux node performance benchmarks. These APIs provide
      access to hardware specifications, performance metrics, benchmark results, and node tier
      qualification status. Critical for node operators to ensure optimal performance and 
      maintain network participation requirements.
      
      **Monitoring Capabilities:**
      - Hardware specification reporting
      - Performance benchmark execution
      - Node tier status verification
      - Resource utilization metrics
      - Network connectivity testing
      
  - name: Flux
    description: >-
      **Flux Network Operations**
      
      Core network endpoints for interacting with the broader Flux decentralized network.
      These APIs provide access to network statistics, node information, consensus data,
      and network-wide operations that facilitate the decentralized cloud infrastructure.
      
      **Network Services:**
      - Node discovery and registry
      - Network consensus information
      - Global network statistics
      - Peer-to-peer communication
      - Distributed coordination
      
  - name: Apps
    description: >-
      **Decentralized Application Management**
      
      Comprehensive endpoints for deploying, managing, and monitoring decentralized applications 
      (dApps) on the Flux network. These APIs handle the complete application lifecycle from 
      deployment to scaling, including Docker container management, resource allocation, and 
      global distribution across the Flux node network.
      
      **Application Services:**
      - Docker-based app deployment
      - Application lifecycle management
      - Resource scaling and allocation
      - Multi-region distribution
      - Application marketplace integration
      - Performance monitoring and analytics
      
  - name: Explorer
    description: >-
      **Blockchain Explorer Services**
      
      Blockchain exploration endpoints providing detailed access to on-chain data, transaction 
      history, address information, and network analytics. These APIs power blockchain explorers
      and provide developers with comprehensive blockchain data access for building analytics
      and monitoring applications.
      
      **Explorer Features:**
      - Transaction history and details
      - Address balance and activity
      - Block information and statistics
      - Network-wide analytics
      - Search and filtering capabilities
      
  - name: Syncthing
    description: >-
      **Distributed File Synchronization**
      
      Endpoints for managing Syncthing-based distributed file synchronization services.
      These APIs enable secure, decentralized file sharing and synchronization across
      Flux nodes, providing reliable data distribution and backup capabilities for
      decentralized applications and user data.
      
      **Synchronization Services:**
      - Peer-to-peer file synchronization
      - Distributed storage management
      - Conflict resolution
      - Encryption and security
      - Bandwidth optimization
      
  - name: Fluxshare
    description: >-
      **Decentralized File Sharing**
      
      Advanced file sharing and storage endpoints built on the Flux decentralized network.
      FluxShare provides secure, distributed file storage with redundancy, encryption,
      and global accessibility. Ideal for building decentralized storage applications
      and content distribution networks.
      
      **Storage Features:**
      - Distributed file storage
      - Redundancy and fault tolerance
      - End-to-end encryption
      - Global content distribution
      - Access control and sharing permissions
      
  - name: Backup/Restore
    description: >-
      **Application Backup & Recovery**
      
      Comprehensive backup and disaster recovery endpoints for Flux applications and data.
      These APIs provide automated backup creation, version management, and restoration
      capabilities to ensure data integrity and business continuity for decentralized
      applications running on the Flux network.
      
      **Backup Services:**
      - Automated backup scheduling
      - Version control and history
      - Cross-region replication  
      - Point-in-time recovery
      - Disaster recovery orchestration
      
  - name: Volume Browser
    description: >-
      **Persistent Storage Management**
      
      Advanced volume and persistent storage management endpoints for containerized applications.
      These APIs provide comprehensive file system operations, storage allocation, and data
      management capabilities for applications requiring persistent data storage across
      the distributed Flux network.
      
      **Storage Management:**
      - Volume provisioning and management
      - File system operations
      - Storage quota enforcement
      - Data migration and replication
      - Performance optimization
      
  - name: IOUtils
    description: >-
      **File System Operations & Utilities**
      
      Low-level file system operation endpoints providing essential I/O utilities for
      application development and system administration. These APIs offer direct file
      manipulation, directory management, and system utilities required for advanced
      application deployment and management on Flux nodes.
      
      **I/O Operations:**
      - File and directory management
      - Permission and ownership control
      - Data transfer utilities
      - System resource monitoring
      - Batch operation support
  - name: ArcaneOS
    description: >-
      **Hardened Node Operating System**

      Endpoints exposed only by nodes running ArcaneOS, the hardened FluxOS
      appliance image. They cover attested configuration synchronisation, where
      the node's identity keys are held by the operating system rather than by
      FluxOS. Every other node answers these routes with `501 Not Implemented`.

      **ArcaneOS Capabilities:**
      - Hardware-backed key custody
      - Challenge/response configuration sync via `flux-configd`
      - Watchdog-managed CloudUI
      - HTTPS-only endpoints

  - name: Payments
    description: >-
      **Wallet Payment Callbacks**

      A rendezvous between a web page and a wallet it opens. The page mints a
      payment id on a node, listens on that node's `/ws/payment/<paymentId>`
      WebSocket, and gives the wallet a callback to
      `POST /payment/verifypayment?paymentid=<paymentId>`; the transaction id
      the wallet posts there is delivered to the waiting page. The node relays
      the transaction id as a claim and records nothing: it is not a payment
      verification.

      **Payment Services:**
      - Payment id issuance, rate-limited per caller
      - Wallet callback relay to the waiting browser

x-tagGroups:
  - name: Getting Started
    tags:
      - Authentication
      - ID
  - name: Applications
    tags:
      - Apps
      - Volume Browser
      - IOUtils
  - name: Node Operations
    tags:
      - Flux
      - Benchmark
      - ArcaneOS
  - name: Blockchain
    tags:
      - Daemon
      - Explorer
  - name: Storage & Sync
    tags:
      - Syncthing
      - Fluxshare
      - Backup/Restore
  - name: Commerce
    tags:
      - Payments
servers:
  - url: 'https://api.runonflux.io'
    description: >-
      Production API Gateway - global load-balanced endpoint. Requests are served
      by whichever confirmed FluxNode the gateway routes to, so node-scoped
      endpoints (anything that reports or changes the state of one machine)
      should be called against a specific node instead.
  - url: 'https://{nodeip}:16127'
    description: 'Direct Flux Node Connection - Connect directly to specific node'
    variables:
      nodeip:
        description: 'Flux node IP address or hostname'
        default: 'localhost'
  - url: 'http://localhost:16127'
    description: 'Local Development Node - For local testing'
  - url: 'https://explorer.runonflux.io'
    description: 'Explorer API - Blockchain data and statistics'
  - url: 'https://stats.runonflux.io'
    description: 'Network Statistics API - Real-time network metrics'
paths:
  #ID
  /id/loginphrase:
    get:
      tags:
        - Authentication
        - ID
      summary: Obtain login phrase
      description: >-
        Obtain valid Login Phrase for signing into Flux. Login Phrase is at
        least 40 characters, first 13 characters is server timestamp and is
        valid for 15 minutes.


        A phrase is issued only to a node that passes the same fitness checks
        as `GET /flux/health`, run in this order: local database, Syncthing,
        Docker, tier hardware, DOS state, applications DOS state. The first
        failing check is answered instead of a phrase as an error body; a DOS
        failure carries `name` `DOS` or `CONNERROR` and the DOS score as
        `code`. Since 8.19.0 the Syncthing check refuses only a node whose
        Syncthing FluxOS supervises (a local Syncthing on a node that is not
        ArcaneOS), and only once Syncthing has been measured unhealthy; a node
        that has not yet measured it is not refused. `GET /id/emergencyphrase`
        issues a phrase without these checks. **Public**
      operationId: loginPhrase
      security: []
      x-codeSamples:
        - lang: 'curl'
          source: |
            curl -X GET "https://api.runonflux.io/id/loginphrase"
        - lang: 'JavaScript'
          source: |
            const response = await fetch('https://api.runonflux.io/id/loginphrase');
            const data = await response.json();
            console.log(data.data); // Login phrase string
        - lang: 'Node.js'
          source: |
            const https = require('https');
            
            const options = {
              hostname: 'api.runonflux.io',
              path: '/id/loginphrase',
              method: 'GET'
            };
            
            const req = https.request(options, (res) => {
              let data = '';
              res.on('data', chunk => data += chunk);
              res.on('end', () => {
                const result = JSON.parse(data);
                console.log(result.data);
              });
            });
            req.end();
        - lang: 'Python'
          source: |
            import requests
            
            response = requests.get('https://api.runonflux.io/id/loginphrase')
            data = response.json()
            login_phrase = data['data']
            print(login_phrase)
        - lang: 'PHP'
          source: |
            <?php
            $response = file_get_contents('https://api.runonflux.io/id/loginphrase');
            $data = json_decode($response, true);
            $loginPhrase = $data['data'];
            echo $loginPhrase;
            ?>
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: loginphrase
              example:
                status: success
                data: 1574994809615gj4ct52kzz695twl0l27np0ivkmvu2ow4lbtpwk2nvf2k
  /id/emergencyphrase:
    get:
      tags:
        - ID
      summary: Obtain emergency login phrase
      description: >-
        Obtain an emergency Login Phrase for signing into Flux, issued without
        the node-fitness checks of `GET /id/loginphrase`. Valid for 15 minutes.
        **Public**
      operationId: emergencyLoginPhrase
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: loginphrase
              example:
                status: success
                data: 1587939091067l06vdyv5wtl80q5aj0npi3vyyig869ogf7o7jxfpu68r
  /id/verifylogin:
    post:
      tags:
        - Authentication
        - ID
      summary: Login into Flux
      description: >-
        Login into Flux by submitting correct FluxID, login phrase and
        signature. Note that to get the signature of the signed message you
        would need to do the signing on Zelcore or your BTC wallet or your ETH wallet. If success
        status response is returned, we can use the supplied data(zelid,
        loginPhrase, signature) as zelidauth header as part of api calls that
        require a user to be logged in. Additionally it is possible to listen
        for a response on websocket.
        ws://{Flux_IP}:16127/ws/id/{loginPhrase}. **Public**
      operationId: verifyLogin
      security: []
      x-codeSamples:
        - lang: 'curl'
          source: |
            curl -X POST "https://api.runonflux.io/id/verifylogin" \
              -H "Content-Type: text/plain" \
              -d '{
                "zelid": "1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC",
                "loginPhrase": "1574994809615gj4ct52kzz695twl0l27np0ivkmvu2ow4lbtpwk2nvf2k",
                "signature": "IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6/R+s5bI72NQs/TPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs="
              }'
        - lang: 'JavaScript'
          source: |
            const loginData = {
              zelid: "1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC",
              loginPhrase: "1574994809615gj4ct52kzz695twl0l27np0ivkmvu2ow4lbtpwk2nvf2k", 
              signature: "IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6/R+s5bI72NQs/TPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs="
            };
            
            const response = await fetch('https://api.runonflux.io/id/verifylogin', {
              method: 'POST',
              headers: { 'Content-Type': 'text/plain' },
              body: JSON.stringify(loginData)
            });
            
            const result = await response.json();
            console.log(result);
        - lang: 'Python'
          source: |
            import requests
            import json
            
            login_data = {
                "zelid": "1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC",
                "loginPhrase": "1574994809615gj4ct52kzz695twl0l27np0ivkmvu2ow4lbtpwk2nvf2k",
                "signature": "IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6/R+s5bI72NQs/TPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs="
            }
            
            response = requests.post(
                'https://api.runonflux.io/id/verifylogin',
                headers={'Content-Type': 'text/plain'},
                data=json.dumps(login_data)
            )
            
            result = response.json()
            print(result)
      requestBody:
        content:
          text/plain:
            schema:
              $ref: '#/components/schemas/FluxIDLogin'
            example:
              loginPhrase: 1575012988077darschvve5ag82g8e8sgeij4sn61842ya7ovxi9r3kba
              zelid: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
              signature: IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6/R+s5bI72NQs/TPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs=
        description: FluxID login object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: status
                    enum:
                      - success
                      - error
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                        description: explanation of status
                      zelid:
                        type: string
                        description: supplied FluxID or bitcoin P2PKH address or ethereum address
                      loginPhrase:
                        type: string
                        description: valid and active loginPhrase
                      signature:
                        type: string
                        description: signature of loginPhrase signed with zelid/btc/eth address
                      privilage:
                        type: string
                        description: >-
                          Granted Flux privilege. The field is spelled
                          `privilage` on the wire.
                        enum:
                          - user
                          - fluxteam
                          - admin
                      createdAt:
                        type: string
                        format: date-time
                        description: Session start (the login phrase timestamp)
                      expireAt:
                        type: string
                        format: date-time
                        description: Session expiry, 14 days after createdAt
              example:
                status: success
                data:
                  message: Successfully logged in
                  zelid: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
                  loginPhrase: 1575012988077darschvve5ag82g8e8sgeij4sn61842ya7ovxi9r3kba
                  signature: >-
                    IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6/R+s5bI72NQs/TPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs=
                  privilage: admin
                  createdAt: '2019-11-29T07:36:28.077Z'
                  expireAt: '2019-12-13T07:36:28.077Z'
  /id/providesign:
    post:
      tags:
        - Authentication
        - ID
      summary: Provide Signature
      description: >-
        Provide requested signature from signed message to return data.
        **Public**
      operationId: provideSign
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                address:
                  type: string
                  description: FluxID or any P2PKH Bitcoin address or Ethereum address
                message:
                  type: string
                  description: >-
                    Login phrase message that was provided by GET
                    /id/loginphrase
                signature:
                  type: string
                  description: Signature of signed loginPhrase with zelid/btc/eth address
            example:
              address: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
              message: 1575012988077darschvve5ag82g8e8sgeij4sn61842ya7ovxi9r3kba
              signature: >-
                IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6/R+s5bI72NQs/TPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs=
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      signature:
                        type: string
                        description: Signature of signed loginPhrase with FluxID
                      identifier:
                        type: string
                        description: FluxID, P2PKH or Ethereum address followed by the last 13 characters of the signed message
                      createdAt:
                        type: string
                        description: Start date and time of vaild message
                      expireAt:
                        type: string
                        description: End date and and time of valid message
                      _id:
                        type: string
                        description: ObjectID
              example:
                status: success
                data:
                  signature: >-
                    IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6/R+s5bI72NQs/TPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs=
                  identifier: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uCya7ovxi9r3kba
                  createdAt: '2020-09-12T11:28:28.457Z'
                  expireAt: '2020-09-12T11:43:28.457Z'
                  _id: 5f6cb0bcb7e30e24063e1777
  /id/loggedsessions:
    get:
      tags:
        - ID
      summary: Obtain all logged sessions of FluxID.
      description: >-
        Gets all currently active logged sessions in Flux tied to given
        FluxID. **User**
      operationId: loggedSessions
      security:
        - FluxID: []
      x-codeSamples:
        - lang: 'curl'
          source: |
            curl -X GET "https://api.runonflux.io/id/loggedsessions" \
              -H "zelidauth: zelid=1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC&signature=IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6%2FR%2Bs5bI72NQs%2FTPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs%3D&loginPhrase=1574994809615gj4ct52kzz695twl0l27np0ivkmvu2ow4lbtpwk2nvf2k"
        - lang: 'JavaScript'
          source: |
            const authHeader = 'zelid=1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC&signature=' + 
              encodeURIComponent('IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6/R+s5bI72NQs/TPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs=') +
              '&loginPhrase=1574994809615gj4ct52kzz695twl0l27np0ivkmvu2ow4lbtpwk2nvf2k';
            
            const response = await fetch('https://api.runonflux.io/id/loggedsessions', {
              headers: { 'zelidauth': authHeader }
            });
            
            const result = await response.json();
            console.log(result);
        - lang: 'Python'
          source: |
            import requests
            from urllib.parse import quote
            
            auth_header = (
                f"zelid=1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC&"
                f"signature={quote('IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6/R+s5bI72NQs/TPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs=')}&"
                f"loginPhrase=1574994809615gj4ct52kzz695twl0l27np0ivkmvu2ow4lbtpwk2nvf2k"
            )
            
            response = requests.get(
                'https://api.runonflux.io/id/loggedsessions',
                headers={'zelidauth': auth_header}
            )
            
            result = response.json()
            print(result)
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        zelid:
                          type: string
                          description: associated FluxID
                        loginPhrase:
                          type: string
                          description: login phrase used for session
                        createdAt:
                          type: string
                          format: date-time
                          description: Session start
                        expireAt:
                          type: string
                          format: date-time
                          description: Session expiry
              example:
                status: success
                data:
                  - zelid: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
                    loginPhrase: 1566749385160npvtiku0z7yqsxgenyvzfmfrz7pyxrxvflv3sfztbc
                  - zelid: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
                    loginPhrase: 1566822581693fuuo3oi0sqdvab9h8baavc0kdawxvbwjgdbjsy5tk739m
                  - zelid: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
                    loginPhrase: 1566970790344nhd5tjwyphq4l1azf5o64axfz75b8892poo853ivbfc
                  - zelid: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
                    loginPhrase: 15673514189266fzehz9q1ujvw4fg5lsko9q6qrfji3iwfg9hkblx5dpm
                  - zelid: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
                    loginPhrase: 1575011828315mzqenqvi9ixaq0yr34g8jtvwgcs3d33cf1ies0myd
                  - zelid: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
                    loginPhrase: 1575012988077darschvve5ag82g8e8sgeij4sn61842ya7ovxi9r3kba
  /id/logoutcurrentsession:
    get:
      tags:
        - ID
      summary: Logs out current session
      description: >-
        This call logs out currently logged session which is determined by the
        supplied authentication header. **User**
      operationId: logoutCurrentSession
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Successfully logged out
  /id/logoutallsessions:
    get:
      tags:
        - ID
      summary: Logs out all sessions
      description: >-
        This call logs out all logged sessions which are determined by the
        supplied authentication header. **User**
      operationId: logoutAllSession
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Successfully logged out all sessions
  /id/loggedusers:
    get:
      tags:
        - ID
      summary: Gets information about logged users
      description: >-
        This call gets basic infromation about currently logged sessions of all
        users. **Admin**
      operationId: loggedUsers
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        zelid:
                          type: string
                          description: users FluxID
                        loginPhrase:
                          type: string
                          description: login phrase used for session
                        createdAt:
                          type: string
                          format: date-time
                          description: Session start
                        expireAt:
                          type: string
                          format: date-time
                          description: Session expiry
              example:
                status: success
                data:
                  - zelid: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
                    loginPhrase: 1566749385160npvtiku0z7yqsxgenyvzfmfrz7pyxrxvflv3sfztbc
                  - zelid: 1E1NSwDHtvCziYP4CtgiDMcgvgZL64PhkR
                    loginPhrase: 1575805361736fdk6ak6yn5lgiuebz1oumh9z8rhyw0kf744f1sk2yd43
  /id/activeloginphrases:
    get:
      tags:
        - ID
      summary: Lists active login phrases
      description: >-
        This call lists the login phrases that are currently active: issued by
        `GET /id/loginphrase` or `GET /id/emergencyphrase` less than 15 minutes
        ago and not yet used. A phrase is removed when it is used to log in
        successfully. **Admin**
      operationId: activeLoginPhrases
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        loginPhrase:
                          type: string
                          description: active login phrase
                        createdAt:
                          type: string
                          description: timestamp of loginPhrase creation in server time.
                        expireAt:
                          type: string
                          description: >-
                            expiration timestamp of loginPhrase. After this
                            time, the loginPhrase cannot be used anymore.
              example:
                status: success
                data:
                  - loginPhrase: 1575865221315yqilps02mx0e1tmf5ymtcry8mbzk4u3k3v17tdsxif6
                    createdAt: '2019-12-09T04:20:21.315Z'
                    expireAt: '2019-12-09T04:35:21.315Z'
                  - loginPhrase: 1575865221315yqilps02mx0e1tmf5ymtcry8mbzk4u3k3v17tdsxif6
                    createdAt: '2019-12-09T04:20:21.315Z'
                    expireAt: '2019-12-09T04:35:21.315Z'
  /id/logoutallusers:
    get:
      tags:
        - ID
      summary: Logs out all users
      description: >-
        This call logs out all logged users (including fluxteam, admins).
        **Admin**
      operationId: logoutAllUsers
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Successfully logged out all users
  /id/logoutspecificsession:
    post:
      tags:
        - Authentication
        - ID
      summary: Logs out a specific session
      security:
        - FluxID: []
      description: >-
        Logs out the session whose `loginPhrase` is sent in the body. Any
        logged-in FluxID may call it; the session is found by its login phrase
        alone, so knowing a session's login phrase is what allows logging it
        out. There is no separate admin path. **User**
      operationId: logoutSpecificSession
      requestBody:
        content:
          text/plain:
            schema:
              type: object
              properties:
                loginPhrase:
                  description: Login Phrase of session we want to log out.
                  type: string
                  minLength: 40
                  example: 1574991374806spbcvsuwerl52tppx9dw5khuz8rew13mkq86gg8r2c
            example:
              loginPhrase: 1575012988077darschvve5ag82g8e8sgeij4sn61842ya7ovxi9r3kba
        description: Object containing loginPhrase
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Session successfully logged out
  /id/checkprivilege:
    post:
      tags:
        - ID
      summary: Checks the privilege level of user
      security: []
      description: >-
        Checks the privilege level of the session described in the body.
        Answers `success` with `message` `admin` (this node's operator),
        `fluxteam` or `user`, checked in that order, or `error` with `message`
        `none` when the session is not valid or a field is missing. **Public**
      operationId: checkLoggedUser
      requestBody:
        content:
          text/plain:
            schema:
              type: object
              required:
                - zelid
                - loginPhrase
                - signature
              properties:
                zelid:
                  type: string
                  description: FluxID
                loginPhrase:
                  type: string
                  description: Login phrase of the session
                signature:
                  type: string
                  description: Signature of signed loginPhrase with FluxID
            example:
              zelid: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
              loginPhrase: 1575012988077darschvve5ag82g8e8sgeij4sn61842ya7ovxi9r3kba
              signature: IAMZBB0p8aQ6A0Zt8uUKFLdWvPJlBypuczhaM6/R+s5bI72NQs/TPF1KYywvJlumMZyvLmk7JelDwaQbfTjqtSs=
        description: Object containing privilege level
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: admin
  #Flux
  /flux/startdaemon:
    get:
      tags:
        - Flux
      summary: Starts Flux daemon
      description: >-
        Tries to start Flux daemon running on the Flux node the call is run
        against without any extra parameters. **AdminAndFluxTeam**
      operationId: startdaemon
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Daemon successfully started
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /flux/restartdaemon:
    get:
      tags:
        - Flux
      summary: Restarts Flux daemon
      description: >-
        Tries to restart Flux daemon running on the Flux node the call is run
        against. Flux daemon is firstly stopped and then started without any
        extra parameters. **AdminAndFluxTeam**
      operationId: restartdaemon
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Daemon successfully restarted
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /flux/entermaster:
    get:
      tags:
        - Flux
      summary: Switch to master branch of FluxOS
      description: >-
        Tries to switch to master branch of FluxOS. **FluxTeam**
      operationId: FluxEnterMaster
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Master branch successfully entered
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /flux/enterdevelopment:
    get:
      tags:
        - Flux
      summary: Switch to development branch of FluxOS
      description: >-
        Tries to switch to development branch of FluxOS. **FluxTeam**
      operationId: FluxEnterDevelopment
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Development branch successfully entered
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /flux/reindexdaemon:
    get:
      tags:
        - Flux
      summary: Reindexes Flux daemon
      description: >-
        Tries to reindex Flux daemon running on the Flux node the call is run
        against. Flux daemon is firstly stopped and then started with reindex
        flag. **Admin**
      operationId: reindexFluxB
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Daemon successfully reindexing
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /flux/updateflux:
    get:
      tags:
        - Flux
      summary: Updates Flux to the latest version
      description: >-
        Updates Flux to the latest version available according to github
        master branch. Flux will restart its services after the update.
        **AdminAndFluxTeam**
      operationId: updateFlux
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Flux successfully updating
  /flux/hardupdateflux:
    get:
      tags:
        - Flux
      summary: Perform hard update to the latest version
      description: >-
        Hard updates to latest version by removing node_modules and
        package-lock.json before executing git reset --hard and git pull. This
        may resolve any issues that may arise from Flux not being able to
        update using the `GET /flux/updateflux` call. Flux will restart
        its services after the update. **AdminAndFluxTeam**
      operationId: hardUpdateFlux
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Flux successfully updating
  /flux/updatedaemon:
    get:
      tags:
        - Flux
      summary: Updates Flux daemon
      description: >-
        Updates the Flux daemon of Flux node to the latest available version
        according to official Flux APT repository. Flux daemon is restarted
        with no extra parameters during this update. **AdminAndFluxTeam**
      operationId: updateDaemon
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Daemon successfully updated
  /flux/updatebenchmark:
    get:
      tags:
        - Flux
      summary: Updates Benchmark daemon
      description: >-
        Updates the Benchmark daemon of Flux node to the latest available version
        according to official Flux APT repository. Benchmark daemon is restarted
        with no extra parameters during this update. **AdminAndFluxTeam**
      operationId: updateBenchmark
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Benchmark successfully updated
  /flux/daemondebug:
    get:
      tags:
        - Flux
      summary: Returns with the Flux debug log
      description: >-
        Returns with the debug log located in Flux data directory.
        **AdminAndFluxTeam**
      operationId: fluxDebug
      security:
        - FluxID: []
      responses:
        '200':
          description: >-
            The log file itself, sent as a download (attachment `debug.log`),
            not a JSON envelope. An unauthorised call is answered with the JSON
            error envelope.
          content:
            text/plain:
              schema:
                type: string
                description: Debug log
              example: >-
                2020-05-09 11:27:30 Flux version v4.0.1-32bd16d-dirty
                (2020-03-20 19:05:39 +0000) 2020-05-09 11:27:30 AppInit2:
                parameter interaction: -externalip set -> setting -discover=0
                2020-05-09 11:27:30 Using BerkeleyDB version Berkeley DB 6.2.23:
                (March 28, 2016) 2020-05-09 11:27:30 Default data directory
                /home/user/.flux 2020-05-09 11:27:30 Using data directory
                /home/user/.flux/ 2020-05-09 11:27:30 Using config file
                /home/user/.flux/flux.conf 2020-05-09 11:27:30 Using at
                most 256 connections (1024 file descriptors available)
                2020-05-09 11:27:30 Using 2 threads for script verification
                2020-05-09 11:27:30 scheduler thread start 2020-05-09 11:27:30
                Loading Sapling (Spend) parameters from
                /home/user/.zcash-params/sapling-spend.params 2020-05-09 11:27:30
                Loading Sapling (Output) parameters from
                /home/user/.zcash-params/sapling-output.params 2020-05-09
                11:27:30 Loading Sapling (Sprout Groth16) parameters from
                /home/user/.zcash-params/sprout-groth16.params 2020-05-09
                11:27:34 Loaded Sapling parameters in 4.129045s seconds.
                2020-05-09 11:27:34 Binding RPC on address 0.0.0.0 port 16124
                failed. 2020-05-09 11:27:34 HTTP: creating work queue of depth
                16 2020-05-09 11:27:34 HTTP: starting 4 worker threads
                2020-05-09 11:27:34 Using wallet wallet.dat 2020-05-09 11:27:34
                init message: Verifying wallet...
  /flux/benchmarkdebug:
    get:
      tags:
        - Flux
      summary: Returns with the Benchmark debug log
      description: >-
        Returns with the debug log located in fluxbenchmark directory.
        **AdminAndFluxTeam**
      operationId: benchmarkDebuf
      security:
        - FluxID: []
      responses:
        '200':
          description: >-
            The log file itself, sent as a download (attachment `debug.log`),
            not a JSON envelope. An unauthorised call is answered with the JSON
            error envelope.
          content:
            text/plain:
              schema:
                type: string
                description: Debug log
              example: >-
                2020-05-13 16:59:02 Benchmark version v1.0.0-beta1-53e0ea2-dirty
                (2020-04-25 13:03:38 +0800) 2020-05-13 16:59:02 Using OpenSSL
                version OpenSSL 1.1.1a  20 Nov 2018 2020-05-13 16:59:02 HTTP:
                creating work queue of depth 16 2020-05-13 16:59:02 HTTP:
                starting 4 worker threads 2020-05-13 16:59:02 Bound to
                [::]:16225 2020-05-13 16:59:02 Bound to 0.0.0.0:16225 2020-05-13
                16:59:02 init message: Done loading 2020-05-13 16:59:02 Starting
                Fluxnodes Benchmarking Thread 2020-05-13 16:59:03 Path:
                /home/user/flux/ZelBack 2020-05-13 16:59:03 ---Flux usage:
                0.23012 2020-05-13 16:59:03 ---package evaluator system setup
                starting 2020-05-13 16:59:03 ---package evaluator already
                installed 2020-05-13 16:59:03 ---package evaluator found
                version: 1.0.11 2020-05-13 16:59:03 ---package evaluator system
                setup completed 2020-05-13 16:59:03 ---Starting computer specs
                test 2020-05-13 16:59:08 ---Found cores: 2 2020-05-13 16:59:08
                ---Found ram: 3.8 2020-05-13 16:59:08 ---Found HDD: 38.200001 G
                2020-05-13 16:59:08 ---Found HDD: 12.000000 G 2020-05-13
                16:59:08 ---Found DD_WRITE: 675.628 2020-05-13 16:59:08
                ---Finished computer specs test 2020-05-13 16:59:08 ---Starting
                package evaluator test 2020-05-13 16:59:29 ---Found eps v1:
                157.185 2020-05-13 16:59:29 ---Finished package evaluator test
  /flux/taildaemondebug:
    get:
      tags:
        - Flux
      summary: Returns last lines of Flux debug log
      description: >-
        Returns last 100 lines known in the Flux debug log.
        **AdminAndFluxTeam**
      operationId: tailFluxDebug
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: >-
                    2020-09-12 01:41:43 keypool reserve 6

                    2020-09-12 01:41:43 keypool return 6

                    2020-09-12 01:41:47 UpdateTip: new
                    best=00000001445f7d700c03f4815cbd3504ba4b133f33493fa0513dfb34a904c024
                    height=684556  log2_work=45.426889  tx=4126528
                    date=2020-09-12 01:40:03 progress=0.999999
                    cache=55.5MiB(15859tx)

                    2020-09-12 01:41:48 keypool reserve 6

                    2020-09-12 01:41:48 keypool return 6

                    2020-09-12 01:41:51 keypool reserve 6

                    2020-09-12 01:41:51 keypool return 6

                    2020-09-12 01:41:56 peer=80 using obsolete version 170006;
                    disconnecting

                    2020-09-12 01:41:56 ProcessMessages(version, 103 bytes)
                    FAILED peer=80

                    2020-09-12 01:41:56 keypool reserve 6

                    2020-09-12 01:41:56 keypool return 6

                    2020-09-12 01:42:02 keypool reserve 6

                    2020-09-12 01:42:02 keypool return 6

                    2020-09-12 01:42:07 keypool reserve 6

                    2020-09-12 01:42:07 keypool return 6

                    2020-09-12 01:42:12 keypool reserve 6

                    2020-09-12 01:42:12 keypool return 6

                    2020-09-12 01:42:17 keypool reserve 6

                    2020-09-12 01:42:17 keypool return 6

                    2020-09-12 01:42:22 keypool reserve 6

                    2020-09-12 01:42:22 keypool return 6

                    2020-09-12 01:42:27 keypool reserve 6

                    2020-09-12 01:42:27 keypool return 6

                    2020-09-12 01:42:32 keypool reserve 6

                    2020-09-12 01:42:32 keypool return 6

                    2020-09-12 01:42:37 keypool reserve 6

                    2020-09-12 01:42:37 keypool return 6

                    2020-09-12 01:42:42 keypool reserve 6

                    2020-09-12 01:42:42 keypool return 6

                    2020-09-12 01:42:47 keypool reserve 6

                    2020-09-12 01:42:47 keypool return 6

                    2020-09-12 01:42:49 keypool reserve 6

                    2020-09-12 01:42:49 keypool return 6

                    2020-09-12 01:42:52 keypool reserve 6

                    2020-09-12 01:42:52 keypool return 6

                    2020-09-12 01:42:57 keypool reserve 6

                    2020-09-12 01:42:57 keypool return 6

                    2020-09-12 01:43:02 keypool reserve 6

                    2020-09-12 01:43:02 keypool return 6

                    2020-09-12 01:43:07 keypool reserve 6

                    2020-09-12 01:43:07 keypool return 6

                    2020-09-12 01:43:12 keypool reserve 6

                    2020-09-12 01:43:12 keypool return 6

                    2020-09-12 01:43:17 keypool reserve 6

                    2020-09-12 01:43:17 keypool return 6

                    2020-09-12 01:43:22 keypool reserve 6

                    2020-09-12 01:43:22 keypool return 6

                    2020-09-12 01:43:27 keypool reserve 6

                    2020-09-12 01:43:27 keypool return 6

                    2020-09-12 01:43:32 keypool reserve 6

                    2020-09-12 01:43:32 keypool return 6

                    2020-09-12 01:43:37 keypool reserve 6

                    2020-09-12 01:43:37 keypool return 6

                    2020-09-12 01:43:42 keypool reserve 6

                    2020-09-12 01:43:42 keypool return 6

                    2020-09-12 01:43:47 keypool reserve 6

                    2020-09-12 01:43:47 keypool return 6

                    2020-09-12 01:43:52 keypool reserve 6

                    2020-09-12 01:43:52 keypool return 6

                    2020-09-12 01:43:57 keypool reserve 6

                    2020-09-12 01:43:57 keypool return 6

                    2020-09-12 01:44:02 keypool reserve 6

                    2020-09-12 01:44:02 keypool return 6

                    2020-09-12 01:44:07 keypool reserve 6

                    2020-09-12 01:44:07 keypool return 6

                    2020-09-12 01:44:12 keypool reserve 6

                    2020-09-12 01:44:12 keypool return 6

                    2020-09-12 01:44:17 keypool reserve 6

                    2020-09-12 01:44:17 keypool return 6

                    2020-09-12 01:44:17 peer=81 using obsolete version 170013;
                    disconnecting

                    2020-09-12 01:44:17 ProcessMessages(version, 103 bytes)
                    FAILED peer=81

                    2020-09-12 01:44:22 keypool reserve 6

                    2020-09-12 01:44:22 keypool return 6

                    2020-09-12 01:44:27 keypool reserve 6

                    2020-09-12 01:44:27 keypool return 6

                    2020-09-12 01:44:29 remove: Remove fluxnode tx from mempool
                    4fea691828378a1cfabfe43ca29b527aea98c81a9ecb3e12a70a53d2eed2c924

                    2020-09-12 01:44:29 UpdateTip: new
                    best=000000747c5d711cb2ae3187797051307b10c2732299cdc2cb8078b1cef91d7d
                    height=684557  log2_work=45.426889  tx=4126534
                    date=2020-09-12 01:43:47 progress=1.000000
                    cache=55.5MiB(15862tx)

                    2020-09-12 01:44:29 Fluxnode found nothing to do:
                    COutPoint(9c8af320e5, 0)

                    2020-09-12 01:44:30 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(a5b2a9ebbb, 0) hash:
                    928f795ecc704c3f0411512ebe3f2732f4f1d94f4dd9239147c8d6cbdf80228e

                    2020-09-12 01:44:30 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(87b6472d8d, 0) hash:
                    c66fada272ddd909aa20a413e8dfa8ecb9e80bdfabe06fe21ca8216923d8fab6

                    2020-09-12 01:44:30 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(0aed717593, 0) hash:
                    090c77f6793fffcfd876c8952b351d4e9bfe40c5795b59480730e8ae3d5edfa4

                    2020-09-12 01:44:30 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(805d696dda, 0) hash:
                    cb2ba22ca622332c02e5855c1d0f176606a19a59269280e800bce5bcc2b44e1c

                    2020-09-12 01:44:30 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(35b4698aad, 0) hash:
                    71edaec39542cc5cf13faa3e181fb98c94d0027a15f3ba90851a9f73c21c91c2

                    2020-09-12 01:44:30 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(49fa5b457d, 0) hash:
                    9ef9da575da26ff4dde7a9eb8b339ca0621c28b924fee46865c196b8259903ad

                    2020-09-12 01:44:31 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(b5bcdabfe4, 0) hash:
                    f854454ad5f32d69b91c778e88d23ec67d695a1d0791c2b97fc4c7d7dfca2220

                    2020-09-12 01:44:32 keypool reserve 6

                    2020-09-12 01:44:32 keypool return 6

                    2020-09-12 01:44:36 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(b5dd6b1a79, 0) hash:
                    cc4c40dc30e54b2ef18f4b7ece987292bac2a8248f763bcd60574d610c811c52

                    2020-09-12 01:44:36 keypool reserve 6\n2020-09-12 01:44:36
                    keypool return 6

                    2020-09-12 01:44:36 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(57f9033b47, 0) hash:
                    0218861ec9783cc45731d3fb1d87858a9d0e7b5bbc48f6d34ac01065db66e140

                    2020-09-12 01:44:38 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(2c122a59b8, 0) hash:
                    f071f20767d1a55783c21e4e754e7d12e18e2729f28935d1db2b13f482d82b91

                    2020-09-12 01:44:38 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(936393fea0, 0) hash:
                    8c623265e5e33dfad68967ff14d31d03dd4c62565e2fd97916903cefb780334a

                    2020-09-12 01:44:39 AcceptToMemoryPool: Adding fluxnode
                    transaction to mempool: COutPoint(e27995065e, 0) hash:
                    ca7c2362a43ce53c0c95221e2333393724601480e14ba9b330d8fd3ecfc9c4da

                    2020-09-12 01:44:41 keypool reserve 6

                    2020-09-12 01:44:41 keypool return 6

                    2020-09-12 01:44:46 keypool reserve 6

                    2020-09-12 01:44:46 keypool return 6

                    2020-09-12 01:44:49 keypool reserve 6

                    2020-09-12 01:44:49 keypool return 6
  /flux/tailbenchmarkdebug:
    get:
      tags:
        - Flux
      summary: Returns last lines of Benchmark debug log
      description: >-
        Returns last 100 lines known in the Benchmark debug log.
        **AdminAndFluxTeam**
      operationId: tailBenchmarkDebug
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: >-
                    2020-09-12 00:03:39 ---Using Historical eps: 167.846

                    2020-09-12 00:03:39 ---Finished package evaluator test

                    2020-09-12 00:23:25 Shutdown: In progress...

                    2020-09-12 00:23:25 StopRPC: waiting for async rpc workers
                    to stop

                    2020-09-12 00:23:25 Shutdown: done

                    2020-09-12 00:24:09

                    2020-09-12 00:24:09 Benchmark version
                    v1.0.0-beta1-b16e73c-dirty (2020-07-16 22:58:47 +0200)

                    2020-09-12 00:24:09 Using OpenSSL version OpenSSL 1.1.1a  20
                    Nov 2018

                    2020-09-12 00:24:09 HTTP: creating work queue of depth 16

                    2020-09-12 00:24:09 HTTP: starting 4 worker threads

                    2020-09-12 00:24:09 Bound to [::]:16225

                    2020-09-12 00:24:09 Bound to 0.0.0.0:16225

                    2020-09-12 00:24:09 init message: Done loading

                    2020-09-12 00:24:09 Starting Fluxnodes Benchmarking Thread

                    2020-09-12 00:24:10 Path: /home/user/flux/ZelBack

                    2020-09-12 00:25:10 ---Flux usage: 0.44897

                    2020-09-12 00:25:10 ---package evaluator system setup
                    starting

                    2020-09-12 00:25:10 ---package evaluator already installed

                    2020-09-12 00:25:10 ---package evaluator found version:
                    1.0.11

                    2020-09-12 00:25:10 ---package evaluator system setup
                    completed

                    2020-09-12 00:25:10 ---Starting computer specs test

                    2020-09-12 00:25:15 ---Found cores: 2

                    2020-09-12 00:25:15 ---Found ram: 3.8

                    2020-09-12 00:25:15 ---Found HDD: 38.200001 G

                    2020-09-12 00:25:15 ---Found HDD: 13.000000 G

                    2020-09-12 00:25:15 ---Found DD_WRITE: 745.264

                    2020-09-12 00:25:15 ---Finished computer specs test

                    2020-09-12 00:25:15 ---Starting package evaluator test

                    2020-09-12 00:25:35 ---Found eps v1: 176.479

                    2020-09-12 00:25:35 ---Finished package evaluator test

                    2020-09-12 00:55:45 ---Restarting benchmarks

                    2020-09-12 00:55:46 Path: /home/user/flux/ZelBack

                    2020-09-12 00:55:46 ---Flux usage: 0.16616

                    2020-09-12 00:55:46 ---package evaluator system setup
                    starting

                    2020-09-12 00:55:46 ---package evaluator already installed

                    2020-09-12 00:55:46 ---package evaluator found version:
                    1.0.11

                    2020-09-12 00:55:46 ---package evaluator system setup
                    completed

                    2020-09-12 00:55:46 ---Starting computer specs test

                    2020-09-12 00:55:46 ---Found cores: 2

                    2020-09-12 00:55:46 ---Found ram: 3.8

                    2020-09-12 00:55:46 ---Found HDD: 38.200001 G

                    2020-09-12 00:55:46 ---Found HDD: 13.000000 G

                    2020-09-12 00:55:46 ---Using Historical DD_WRITE: 745.264

                    2020-09-12 00:55:46 ---Finished computer specs test

                    2020-09-12 00:55:46 ---Starting package evaluator test

                    2020-09-12 00:55:46 ---Using Historical eps: 176.479

                    2020-09-12 00:55:46 ---Finished package evaluator test

                    2020-09-12 01:25:56 ---Restarting benchmarks

                    2020-09-12 01:25:57 Path: /home/user/flux/ZelBack

                    2020-09-12 01:25:57 ---Flux usage: 0.21791

                    2020-09-12 01:25:57 ---package evaluator system setup
                    starting

                    2020-09-12 01:25:57 ---package evaluator already installed

                    2020-09-12 01:25:57 ---package evaluator found version:
                    1.0.11

                    2020-09-12 01:25:57 ---package evaluator system setup
                    completed

                    2020-09-12 01:25:57 ---Starting computer specs test

                    2020-09-12 01:25:57 ---Found cores: 2

                    2020-09-12 01:25:57 ---Found ram: 3.8

                    2020-09-12 01:25:57 ---Found HDD: 38.200001 G

                    2020-09-12 01:25:57 ---Found HDD: 13.000000 G

                    2020-09-12 01:25:57 ---Using Historical DD_WRITE: 745.264

                    2020-09-12 01:25:57 ---Finished computer specs test

                    2020-09-12 01:25:57 ---Starting package evaluator test

                    2020-09-12 01:25:57 ---Using Historical eps: 176.479

                    2020-09-12 01:25:57 ---Finished package evaluator test

                    2020-09-12 01:56:07 ---Restarting benchmarks

                    2020-09-12 01:56:08 Path: /home/user/flux/ZelBack

                    2020-09-12 01:56:08 ---Flux usage: 0.19594

                    2020-09-12 01:56:08 ---package evaluator system setup
                    starting

                    2020-09-12 01:56:08 ---package evaluator already installed

                    2020-09-12 01:56:08 ---package evaluator found version:
                    1.0.11

                    2020-09-12 01:56:08 ---package evaluator system setup
                    completed

                    2020-09-12 01:56:08 ---Starting computer specs test

                    2020-09-12 01:56:08 ---Found cores: 2

                    2020-09-12 01:56:08 ---Found ram: 3.8

                    2020-09-12 01:56:08 ---Found HDD: 38.200001 G

                    2020-09-12 01:56:08 ---Found HDD: 13.000000 G

                    2020-09-12 01:56:08 ---Using Historical DD_WRITE: 745.264

                    2020-09-12 01:56:08 ---Finished computer specs test

                    2020-09-12 01:56:08 ---Starting package evaluator test

                    2020-09-12 01:56:28 ---Found eps v1: 167.138

                    2020-09-12 01:56:28 ---Finished package evaluator test
  /flux/errorlog:
    get:
      tags:
        - Flux
      summary: Returns with the Flux error log
      description: >-
        Returns with the error log located in flux directory.
        **AdminAndFluxTeam**
      operationId: fluxErrorLog
      security:
        - FluxID: []
      responses:
        '200':
          description: >-
            The log file itself, sent as a download (attachment `error.log`),
            not a JSON envelope. An unauthorised call is answered with the JSON
            error envelope.
          content:
            text/plain:
              schema:
                type: string
                description: Error log
              example: >-
                2020-05-13T11:43:35.223Z          {} 2020-05-13T16:58:20.492Z
                {"code":"ECONNREFUSED","name":"Error","message":"connect
                ECONNREFUSED 127.0.0.1:16124"} 2020-05-13T16:58:20.494Z {}
                2020-05-13T16:58:29.181Z
                {"code":"ECONNREFUSED","name":"Error","message":"connect
                ECONNREFUSED 127.0.0.1:16124"} 2020-05-13T16:59:03.686Z
                {"code":-28,"name":"Error","message":"Loading fluxnode payment
                cache..."} 2020-05-13T20:51:36.484Z          {}
                2020-05-14T07:15:38.355Z          {}
                2020-05-14T12:18:38.695Z          {} 2020-05-14T13:30:35.112Z
                {"code":"ECONNREFUSED","name":"Error","message":"connect
                ECONNREFUSED 127.0.0.1:16124"} 2020-05-14T13:30:35.114Z {}
                2020-05-14T13:30:38.782Z          {} 2020-05-14T13:31:09.309Z
                {"code":-28,"name":"Error","message":"Loading fluxnode payment
                cache..."} 2020-05-14T13:37:30.205Z
                {"code":"ECONNREFUSED","name":"Error","message":"connect
                ECONNREFUSED 127.0.0.1:16124"} 2020-05-14T13:38:10.519Z
                {"code":-28,"name":"Error","message":"Loading fluxnode payment
                cache..."} 2020-05-14T13:58:08.810Z          {}
                2020-05-14T14:49:30.295Z
                {"code":"ECONNREFUSED","name":"Error","message":"connect
                ECONNREFUSED 127.0.0.1:16124"} 2020-05-14T14:49:32.669Z
                {"code":"ECONNREFUSED","name":"Error","message":"connect
                ECONNREFUSED 127.0.0.1:16124"} 2020-05-14T14:49:32.672Z {}
                2020-05-14T14:50:10.807Z
                {"code":-28,"name":"Error","message":"Loading fluxnode payment
                cache..."} 2020-05-14T16:19:39.197Z          {}
  /flux/tailerrorlog:
    get:
      tags:
        - Flux
      summary: Returns last lines of Flux error log
      description: >-
        Returns last 100 lines known in the Flux error log.
        **AdminAndFluxTeam**
      operationId: tailFluxErrorLog
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: >-
                    2020-09-11T18:36:17.339Z          {}

                    2020-09-11T18:36:17.452Z          {}

                    2020-09-11T18:36:17.553Z          {}

                    2020-09-11T18:36:17.776Z          {}

                    2020-09-11T18:36:17.898Z          {}

                    2020-09-11T18:36:18.102Z          {}

                    2020-09-11T18:36:18.207Z          {}

                    2020-09-11T18:36:18.711Z          {}

                    2020-09-11T18:36:18.812Z          {}

                    2020-09-11T18:36:18.915Z          {}

                    2020-09-11T18:36:19.016Z          {}

                    2020-09-11T18:36:19.218Z          {}

                    2020-09-11T18:36:19.318Z          {}

                    2020-09-11T18:36:19.521Z          {}

                    2020-09-11T18:48:11.898Z          {}

                    2020-09-11T18:48:17.556Z          {}

                    2020-09-11T18:48:19.812Z          {}

                    2020-09-11T18:52:20.539Z          {}

                    2020-09-11T18:55:26.079Z          {}

                    2020-09-11T18:55:26.159Z          {}

                    2020-09-11T19:00:19.193Z          {}

                    2020-09-11T19:04:07.389Z          {}

                    2020-09-11T19:04:13.667Z          {}

                    2020-09-11T19:14:10.229Z          {}

                    2020-09-11T19:24:16.383Z          {}

                    2020-09-11T19:32:09.297Z          {}

                    2020-09-11T19:56:17.959Z          {}

                    2020-09-11T20:03:26.244Z          {}

                    2020-09-11T20:06:22.354Z          {}

                    2020-09-11T20:24:14.665Z          {}

                    2020-09-11T20:36:19.212Z          {}

                    2020-09-11T20:42:12.967Z          {}

                    2020-09-11T20:44:12.980Z          {}

                    2020-09-11T20:49:40.861Z          {}

                    2020-09-11T20:52:16.705Z          {}

                    2020-09-11T20:52:16.893Z          {}

                    2020-09-11T20:52:16.994Z          {}

                    2020-09-11T20:54:12.108Z          {}

                    2020-09-11T21:07:27.799Z          {}

                    2020-09-11T21:08:19.471Z          {}

                    2020-09-11T21:13:39.968Z          {}

                    2020-09-11T21:16:09.308Z          {}

                    2020-09-11T21:24:17.914Z          {}

                    2020-09-11T21:24:18.011Z          {}

                    2020-09-11T21:29:13.920Z          {}

                    2020-09-11T21:36:09.406Z          {}

                    2020-09-11T21:48:08.548Z          {}

                    2020-09-11T21:54:57.653Z          {}

                    2020-09-11T22:08:20.088Z          {}

                    2020-09-11T22:12:17.281Z          {}

                    2020-09-11T22:15:21.272Z          {}

                    2020-09-11T22:22:56.814Z          {}

                    2020-09-11T22:26:24.336Z          {}

                    2020-09-11T22:40:18.348Z          {}

                    2020-09-11T22:48:14.137Z          {}

                    2020-09-11T23:12:15.635Z          {}

                    2020-09-11T23:23:44.443Z          {}

                    2020-09-11T23:24:44.429Z          {}

                    2020-09-11T23:27:32.293Z          {}

                    2020-09-11T23:29:14.338Z          {}

                    2020-09-11T23:50:22.790Z          {}

                    2020-09-11T23:50:23.146Z          {}

                    2020-09-11T23:51:32.910Z          {}

                    2020-09-12T00:01:44.369Z          {}

                    2020-09-12T00:05:14.362Z          {}

                    2020-09-12T00:11:14.366Z          {}

                    2020-09-12T00:16:20.163Z          {}

                    2020-09-12T00:23:26.264Z          {}

                    2020-09-12T00:23:26.395Z          {}

                    2020-09-12T00:23:26.496Z          {}

                    2020-09-12T00:23:26.779Z          {}

                    2020-09-12T00:23:27.502Z          {}

                    2020-09-12T00:23:27.703Z          {}

                    2020-09-12T00:23:27.804Z          {}

                    2020-09-12T00:23:27.906Z          {}

                    2020-09-12T00:23:28.006Z          {}

                    2020-09-12T00:23:28.207Z          {}

                    2020-09-12T00:23:28.308Z          {}

                    2020-09-12T00:23:28.409Z          {}

                    2020-09-12T00:23:57.695Z          {}

                    2020-09-12T00:24:04.521Z
                    {"code":-28,"name":"Error","message":"Activating best
                    chain..."}

                    2020-09-12T00:24:19.135Z          {}

                    2020-09-12T00:34:22.624Z          {}

                    2020-09-12T00:49:11.875Z          {}

                    2020-09-12T00:52:11.993Z          {}

                    2020-09-12T00:52:17.362Z          {}

                    2020-09-12T00:52:18.594Z          {}

                    2020-09-12T01:03:14.488Z          {}

                    2020-09-12T01:06:56.394Z          {}

                    2020-09-12T01:18:11.652Z          {}

                    2020-09-12T01:24:13.613Z          {}

                    2020-09-12T01:30:41.937Z          {}

                    2020-09-12T01:31:13.278Z          {}

                    2020-09-12T01:32:19.941Z          {}

                    2020-09-12T01:34:11.928Z          {}

                    2020-09-12T01:34:56.540Z          {}

                    2020-09-12T01:47:11.945Z          {}

                    2020-09-12T01:56:27.102Z          {}

                    2020-09-12T02:01:12.047Z          {}

                    2020-09-12T02:15:22.973Z          {}
  /flux/nodetier:
    get:
      tags:
        - Flux
      summary: Node Tier
      description: This call will display the tier of the node. **Public**
      operationId: getNodeTier
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Node Tier
              example:
                status: success
                data: cumulus
  /flux/info:
    get:
      tags:
        - Flux
      summary: Combined info
      description: Combined info of statuses. **Public**
      operationId: getFluxInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      daemon:
                        type: object
                        properties:
                          info:
                            $ref: '#/components/schemas/daemongetinfo'
                          zmqEnabled:
                            type: boolean
                            description: Whether the daemon publishes block hashes over ZMQ
                      node:
                        type: object
                        properties:
                          status:
                            $ref: '#/components/schemas/fluxnodestatus'
                      benchmark:
                        type: object
                        properties:
                          info:
                            $ref: '#/components/schemas/benchinfo'
                          status:
                            $ref: '#/components/schemas/benchstatus'
                          bench:
                            $ref: '#/components/schemas/getbenchmarks'
                      flux:
                        type: object
                        properties:
                          version:
                            type: string
                            description: Version number
                          nodeJsVersion:
                            type: string
                          syncthingVersion:
                            type: string
                          dockerVersion:
                            type: string
                          mongoDbVersion:
                            type: string
                          os:
                            type: string
                          osVersion:
                            type: string
                          osPrettyName:
                            type: string
                          ip:
                            type: string
                            description: Server's IP address and API port (`ip:port`)
                          staticIp:
                            type: boolean
                            enum:
                              - true
                              - false
                            description: If ``true`` node have a static IP address
                          dosStaging:
                            type: string
                            nullable: true
                            enum:
                              - HOLD
                              - EVACUATE
                            description: How far the node is through being staged out of service, or null
                          upnp:
                            type: boolean
                          maxNumberOfIpChanges:
                            type: integer
                          zelid:
                            type: string
                            description: Admin's FluxID
                          arcaneVersion:
                            type: string
                            description: ArcaneOS only
                          arcaneHumanVersion:
                            type: string
                            description: ArcaneOS only
                          timezone:
                            type: string
                            description: Server's timezone
                          dos:
                            type: object
                            properties:
                              dosState:
                                type: number
                                description: >-
                                  Number indicating value of DOS state from 0 to
                                  infinity
                              dosMessage:
                                type: string
                                description: Status message or Null if no message
                          appsDos:
                            type: object
                            properties:
                              dosState:
                                type: number
                                description: >-
                                  Number indicating value of DOS state from 0 to
                                  infinity
                              dosMessage:
                                type: string
                                description: Status message or Null if no message
                          development:
                            type: boolean
                            enum:
                              - true
                              - false
                            description: If ```true``` development branch is active 
                          explorerScannedHeigth: 
                            type: object
                            properties:
                              generalScannedHeight:
                                type: integer
                                description: Explorer block height
                          numberOfConnectionsOut:
                            type: integer
                          numberOfConnectionsIn:
                            type: integer
                      apps:
                        type: object
                        properties:
                          fluxusage:
                            type: string
                            description: Amount of CPU usage
                          runningapps:
                            $ref: '#/components/schemas/containerinfo'
                          resources:
                            $ref: '#/components/schemas/appsresources'
                      geolocation:
                        $ref: '#/components/schemas/geolocation'
                      appsHashesTotal:
                        type: integer
                      hashesPresent:
                        type: integer
              example:
                status: success
                data:
                  daemon:
                    info:
                      version: 6020050
                      protocolversion: 170018
                      walletversion: 60000
                      blocks: 1455414
                      timeoffset: 0
                      connections: 100
                      proxy: ''
                      difficulty: 27259.8892076468
                      testnet: false
                      keypoololdest: 1674853325
                      keypoolsize: 101
                      paytxfee: 0
                      relayfee: 0.000001
                      errors: ''
                  node:
                    status:
                      status: CONFIRMED
                      collateral: COutPoint(405e86b48a5d6846763f260154ca15383854ce5a2efad31474e55ff60cb62979, 0)
                      txhash: 405e86b48a5d6846763f260154ca15383854ce5a2efad31474e55ff60cb62979
                      outidx: 0
                      ip: 185.216.177.168
                      network: ipv4
                      added_height: 1327207
                      confirmed_height: 1327209
                      last_confirmed_height: 1455394
                      last_paid_height: 1453696
                      tier: NIMBUS
                      payment_address: t1b6ZZLYAVG8QaafiZxB4dwX77YLLtMZeRx
                      pubkey: 047f9deaee93ae795a354d5b0977dcc3949e062bdbacdd78384b550987ab9db4545f96a5b59bfb2418cba08a181a9eb501bf70d49ef0fc2aa17bcbaf7ada334c8b
                      activesince: '1677520595'
                      lastpaid: '1692825635'
                      amount: '12500.00'
                  benchmark:
                    info:
                      version: 3.9.0
                      rpcport: 16224
                    status:
                      status: online
                      benchmarking: NIMBUS
                      ipaddress: 185.216.177.168
                      architecture: amd64
                      armboard: ''
                      tier: NIMBUS
                      time: 1693033429
                      real_cores: 10
                      cores: 10
                      ram: 31
                      ssd: 1024
                      hdd: 0
                      ddwrite: 1114.33
                      totalstorage: 1024
                      disksinfo:
                        - disk: vda
                          size: 1024
                          writespeed: 1114.33
                      eps: 1036
                      ping: 7.226
                      download_speed: 809.3055686875
                      upload_speed: 310.0325255625
                      bench_version: 1.0.20
                      speed_version: 1.2.0
                      thunder: false
                      error: ''
                  flux:
                    version: 4.9.1
                    ip: 185.216.177.168:16127
                    staticIp: true
                    zelid: 1HWjQ9S3MyzV6EbtDMEkpHm31parya412N
                    timezone: Europe/Berlin
                    dos:
                      dosState: 0
                      dosMessage: null
                    appsDos:
                      dosState: 0
                      dosMessage: null
                    development: false
                    explorerScannedHeigth:
                      generalScannedHeight: 1455414
                    numberOfConnectionsOut: 19
                    numberOfConnectionsIn: 33
                  apps:
                    fluxusage: '5.24500000'
                    runningapps:
                      - Id: 4d4f8b41bc06be437a289411fc368b533cb3037262db6c1b7da834b9ff64c990
                        Names:
                          - /fluxnode_PresearchNode1692351142712
                        Image: presearch/node:latest
                        ImageID: sha256:250779dc2ac2c4b8bef16ef46d0d5f4310eb9677e3da622f1a8dbbfc701dae36
                        Command: /app/presearch-node
                        Created: 1692377195
                        Ports:
                          - IP: 0.0.0.0
                            PrivatePort: 38253
                            PublicPort: 39000
                            Type: tcp
                          - IP: '::'
                            PrivatePort: 38253
                            PublicPort: 39000
                            Type: tcp
                          - IP: 0.0.0.0
                            PrivatePort: 38253
                            PublicPort: 39000
                            Type: udp
                          - IP: '::'
                            PrivatePort: 38253
                            PublicPort: 39000
                            Type: udp
                          - PrivatePort: 39000
                            Type: tcp
                          - PrivatePort: 39000
                            Type: udp
                        Labels: {}
                        State: running
                        Status: Up 7 days
                      - Id: ec7fbc0d1815dca14cbfc7618ca98bfed786664634919cfadcfe5ad476626fdd
                        Names:
                          - /fluxisokoredis_IsokoSSE
                        Image: isokoxyz/isoko-redis:latest
                        ImageID: sha256:57827417aa9fbd1d64bbdaece64baa432ba5ec59edce99c774e64f8c83c02c66
                        Command: docker-entrypoint.sh redis-server --requirepass password
                        Created: 1692341609
                        Ports:
                          - PrivatePort: 39470
                            Type: udp
                          - PrivatePort: 6379
                            Type: tcp
                          - IP: 0.0.0.0
                            PrivatePort: 3679
                            PublicPort: 39470
                            Type: tcp
                          - IP: '::'
                            PrivatePort: 3679
                            PublicPort: 39470
                            Type: tcp
                          - IP: 0.0.0.0
                            PrivatePort: 3679
                            PublicPort: 39470
                            Type: udp
                          - IP: '::'
                            PrivatePort: 3679
                            PublicPort: 39470
                            Type: udp
                          - PrivatePort: 39470
                            Type: tcp
                        Labels: {}
                        State: running
                        Status: Up 8 days
                      - Id: c8e4a96024e3fef3790585ffcdb48fd81f914f8ace86e27961fe596675b73119
                        Names:
                          - /fluxisokosse_IsokoSSE
                        Image: isokoxyz/isoko-sse:latest
                        ImageID: sha256:e57a082b29709efc1d25583855276095873fb3b218fe5fb4ba7854bb6f5f900d
                        Command: docker-entrypoint.sh npm run start
                        Created: 1692341603
                        Ports:
                          - IP: 0.0.0.0
                            PrivatePort: 5000
                            PublicPort: 33772
                            Type: udp
                          - IP: '::'
                            PrivatePort: 5000
                            PublicPort: 33772
                            Type: udp
                          - PrivatePort: 33772
                            Type: tcp
                          - PrivatePort: 33772
                            Type: udp
                          - IP: 0.0.0.0
                            PrivatePort: 5000
                            PublicPort: 33772
                            Type: tcp
                          - IP: '::'
                            PrivatePort: 5000
                            PublicPort: 33772
                            Type: tcp
                        Labels: {}
                        State: running
                        Status: Up 8 days
                      - Id: ca7edafff17324889aefbdfd8e9ad936e15f84d677d12716ec38f34fae15e046
                        Names:
                          - /fluxFoldingAtHome_FoldingAtRunOnFlux9
                        Image: yurinnick/folding-at-home:latest
                        ImageID: sha256:3b22eaf749f01384995a122aa97d4e03f80af32350e75ebe125927bf3f1d7a0e
                        Command: /init-wrapper.sh
                        Created: 1692163488
                        Ports:
                          - PrivatePort: 36330
                            Type: tcp
                          - PrivatePort: 36666
                            Type: tcp
                          - PrivatePort: 36666
                            Type: udp
                          - IP: 0.0.0.0
                            PrivatePort: 7396
                            PublicPort: 36666
                            Type: tcp
                          - IP: '::'
                            PrivatePort: 7396
                            PublicPort: 36666
                            Type: tcp
                          - IP: 0.0.0.0
                            PrivatePort: 7396
                            PublicPort: 36666
                            Type: udp
                          - IP: '::'
                            PrivatePort: 7396
                            PublicPort: 36666
                            Type: udp
                        Labels:
                          description: Unofficial Folding@Home image for CPU compute
                          maintainer: yurinnick
                          repository: https://github.com/yurinnick/folding-at-home-docker
                          version: v7.6.21
                        State: running
                        Status: Up 10 days
                      - Id: 373182fd794517c6f959ad0ce208b1c3258ad5b3f182f07d35955f4c35873585
                        Names:
                          - /fluxFoldingAtHome_FoldingAtFluxCloud1691606082588
                        Image: yurinnick/folding-at-home:latest
                        ImageID: sha256:3b22eaf749f01384995a122aa97d4e03f80af32350e75ebe125927bf3f1d7a0e
                        Command: /init-wrapper.sh
                        Created: 1691875783
                        Ports:
                          - PrivatePort: 35555
                            Type: udp
                          - PrivatePort: 36330
                            Type: tcp
                          - IP: 0.0.0.0
                            PrivatePort: 7396
                            PublicPort: 35555
                            Type: tcp
                          - IP: '::'
                            PrivatePort: 7396
                            PublicPort: 35555
                            Type: tcp
                          - IP: 0.0.0.0
                            PrivatePort: 7396
                            PublicPort: 35555
                            Type: udp
                          - IP: '::'
                            PrivatePort: 7396
                            PublicPort: 35555
                            Type: udp
                          - PrivatePort: 35555
                            Type: tcp
                        Labels:
                          description: Unofficial Folding@Home image for CPU compute
                          maintainer: yurinnick
                          repository: https://github.com/yurinnick/folding-at-home-docker
                          version: v7.6.21
                        State: running
                        Status: Up 13 days
                      - Id: e381969e619194b5c037b1063373d52d0e46d883f0cc2000889c064a67b83726
                        Names:
                          - /flux_watchtower
                        Image: containrrr/watchtower
                        ImageID: sha256:f847e1adb570c2cc11d1e613cad97baf3cdfe83ddd3c1a29ada848cfbd4f7f3f
                        Command: /watchtower --cleanup --interval 24133
                        Created: 1676891906
                        Ports:
                          - PrivatePort: 8080
                            Type: tcp
                        Labels:
                          com.centurylinklabs.watchtower: 'true'
                        State: running
                        Status: Up 6 months
                    resources:
                      appsCpusLocked: 4.3
                      appsRamLocked: 17700
                      appsHddLocked: 98
                  geolocation:
                    ip: 185.216.177.168
                    continent: Europe
                    continentCode: EU
                    country: Germany
                    countryCode: DE
                    region: BW
                    regionName: Baden-Wurttemberg
                    lat: 49.0291
                    lon: 8.35695
                    org: netcup GmbH
                  appsHashesTotal: 25312
                  hashesPresent: 25279
  /flux/timezone:
    get:
      tags:
        - Flux
      summary: Flux timezone
      description: This will return with the timezone of the server. **Public**
      operationId: getFluxTimezone
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Timezone
              example:
                status: success
                data: Europe/Berlin
  /flux/version:
    get:
      tags:
        - Flux
      summary: Gets version of Flux
      description: >-
        Gets version of Flux running on the Flux node the call is run against
        as it is in package.json. **Public**
      operationId: getFluxVersion
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Flux version
              example:
                status: success
                data: 4.1.0
  /flux/ip:
    get:
      tags:
        - Flux
      summary: Flux IP
      description: >-
        This will return with the IP address of the server that Flux is on.
        **Public**
      operationId: getFluxIP
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    nullable: true
                    description: IP address and API port (`ip:port`); null while unresolved
              example:
                status: success
                data: 49.12.8.215:16127
  /flux/staticip:
    get:
      tags:
        - Flux
      summary: Flux static IP status
      description: >-
        This will return `true` if FluxNode is running under a known static ip ISP/Org.
        **Public**
      operationId: getFluxStaticIP
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: boolean
                    enum:
                      - true
                      - false
                    description: static ip ISP/Org or not
              example:
                status: success
                data: true
  /flux/geolocation:
    get:
      tags:
        - Flux
      summary: Geolocation info
      description: This will return geolocation info. **Public**
      operationId: getFluxGeolocation
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/geolocation'
              example:
                status: success
                data:
                  ip: 148.113.135.234
                  continent: North America
                  continentCode: NA
                  country: Canada
                  countryCode: CA
                  region: QC
                  regionName: Quebec
                  lat: 45.3151
                  lon: -73.8779
                  org: OVH Hosting, Inc
  /flux/id:
    get:
      tags:
        - Flux
      summary: Admin's FluxID
      description: This will return with the admin's FluxID. **Public**
      operationId: getFluxID
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: FluxID
              example:
                status: success
                data: 1CcoEkKQZcwUXPSps4bZJDjUM3mqe9bNXf
  /flux/pgp:
    get:
      tags:
        - Flux
      summary: PGP identity
      description: This will return node pgp public key. **Public**
      operationId: getPgp
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Pgp public key
              example:
                status: success
                data: |
                  -----BEGIN PGP PUBLIC KEY BLOCK-----
                
                  xjMEZOMsEBYJKwYBBAHaRw8BAQdAqjIh7dGGpEwo2bHAJKPnZJLclDSKPysv
                  gmK3Va+8fcPNdDFlN2U1ODU0YjdlMjk4OWU5NTNlMTA1MGY0MGFmY2YzYWUz
                  ZDQ3ZThlNWI1NDgyZWYyZWViNWZkNTY2ZmNmMmE6MCA8MUhXalE5UzNNeXpW
                  NkVidERNRWtwSG0zMXBhcnlhNDEyTkBydW5vbmZsdXguaW8+wowEEBYKAD4F
                  gmTjLBAECwkHCAmQSQ3C8FnVJhkDFQgKBBYAAgECGQECmwMCHgEWIQQAyk4E
                  Gn08EnjEMCtJDcLwWdUmGQAAC2QBANAEdUdQEUTLQNYnGRzrCvqzBqdPGbJT
                  /zW0nyF8ZLJgAP9pS8OLA3eoYzkhoJKuOn4qcUr48PcBcGzEIpgZFKPPBM44
                  BGTjLBASCisGAQQBl1UBBQEBB0AoXsfprvNft3PNBsCPz9VMl8e342PDq91X
                  VJeSeBnCSAMBCAfCeAQYFggAKgWCZOMsEAmQSQ3C8FnVJhkCmwwWIQQAyk4E
                  Gn08EnjEMCtJDcLwWdUmGQAATboA/3hxWLcTxPRQokx+BlcIXHuRu3fK9cnj
                  UW6j9M99t6hTAQDDdiNNDAEIOnWXBr1NZiD3iqhPv5zOkLDRtpyw+7NGCw==
                  =crwl
                  -----END PGP PUBLIC KEY BLOCK-----
  /flux/kadena:
    get:
      tags:
        - Flux
      summary: Kadena Info
      description: This call will display the user's Kadena address and chain ID. **Public**
      operationId: getFluxKadena
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Kadena address and chain ID
              example:
                status: success
                data: kadena:k:7a1529b3a07fate32d75684ab20bdde61545d60f1c6bcbf2489fef857a316652?chainid=0
  /flux/dosstate:
    get:
      tags:
        - Flux
      summary: DOS state
      description: >-
        This node's DOS score and the reason for it. The node is out of service
        (DOS) at a score of 100 or more; a score above 10, or any message, already
        makes `GET /flux/health` and `GET /id/loginphrase` refuse. While a
        permanent hold is in place (a NodeJS below the network minimum, app
        tampering, the residential DOS or peer-set instability) `dosState` reads
        100 and `dosMessage` lists every holder's reason, joined by `; `.
        **Public**
      operationId: getDOSState
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      dosState:
                        type: integer
                        description: Status number
                      dosMessage:
                        type: string
                        nullable: true
                        description: Explanation of status
              example:
                status: success
                data:
                  dosState: 0
                  dosMessage: null
    post:
      tags:
        - Flux
      summary: Set the DOS state (test builds only)
      description: >-
        Sets the node's DOS state directly. **Available only on nodes started
        with `testEventStream` enabled** — every other node answers `404`. Exists
        so the event stream can be exercised deterministically in testing.
        **FluxTeam**
      operationId: setDOSState
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                dosState:
                  type: number
                dosMessage:
                  type: string
                  nullable: true
            example:
              dosState: 100
              dosMessage: Simulated DOS for testing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  message:
                    dosState: 100
                    dosMessage: Simulated DOS for testing
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          description: Not available — this node was not started with test event streaming
  /flux/health:
    get:
      tags:
        - Flux
      summary: Node fitness
      description: >-
        Whether this node is fit to serve the network, by the same checks that
        gate `GET /id/loginphrase`, run in this order: the local database
        answers, Syncthing is healthy, Docker answers, the hardware still meets
        the node's tier, the node is not in a DOS state (score above 10 or any
        DOS message), and its apps are not in a DOS state (100 or more). The
        first failing check is answered as an error envelope carrying that
        check's message, name and code. For the node DOS check `code` is the DOS
        score and `name` is `DOS` for an IP-detection failure or collateral
        collision, `CONNERROR` otherwise.


        On success `data` names every check passed. `syncthing` is `ok` when a
        health probe landed within the health window, `unmeasured` while FluxOS
        has not yet measured it, and `degraded` when it is unhealthy on a node
        where FluxOS does not own the Syncthing daemon (ArcaneOS); only a node
        whose Syncthing FluxOS supervises is failed for it. Successful answers
        are cached for 30 seconds; failures are not cached. **Public**
      operationId: getNodeHealth
      security: []
      responses:
        '200':
          description: >-
            OK. An unfit node is also answered with HTTP 200, as an error
            envelope, e.g. `{status: error, data: {name: Error, message:
            Syncthing is not running properly}}`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      db:
                        type: string
                        enum:
                          - ok
                      syncthing:
                        type: string
                        enum:
                          - ok
                          - unmeasured
                          - degraded
                      docker:
                        type: string
                        enum:
                          - ok
                      hardware:
                        type: string
                        enum:
                          - ok
                      dos:
                        type: string
                        enum:
                          - ok
                      appsDos:
                        type: string
                        enum:
                          - ok
              example:
                status: success
                data:
                  db: ok
                  syncthing: ok
                  docker: ok
                  hardware: ok
                  dos: ok
                  appsDos: ok
  /flux/connectedpeers:
    get:
      tags:
        - Flux
      summary: Gets IP's of connected peers
      description: Gets list of IP addresses of outgoing connected peers. **Public**
      operationId: connectedPeers
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: string
                      description: IP of connected peer
              example:
                status: success
                data:
                  - 193.188.15.252
                  - 164.68.127.146
                  - 188.239.61.176
                  - 89.187.128.108
  /flux/connectedpeersinfo:
    get:
      tags:
        - Flux
      summary: Gets info of connected peers
      description: >-
        Gets the address, port and latency of each outgoing connected peer.
        **Public**
      operationId: connectedPeersInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        ip:
                          type: string
                          description: Ip address of connected peer
                        port:
                          type: string
                          description: API port of connected peer
                        latency:
                          type: integer
                          nullable: true
                          description: Round trip time of the last ping, in milliseconds
                        lastPingTime:
                          type: integer
                          nullable: true
                          description: Unix milliseconds of the last ping sent
              example:
                status: success
                data:
                  - ip: 193.188.15.252
                    port: '16127'
                    latency: 27
                    lastPingTime: 1772719195000
                  - ip: 164.68.127.146
                    port: '16137'
                    latency: 196
                    lastPingTime: 1772719195000
  /flux/incomingconnections:
    get:
      tags:
        - Flux
      summary: List of incoming connections
      description: Gets list of IP addresses of incoming connected peers. **Public**
      operationId: incomingConnections
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: string
                      description: Ip list of incoming connections
              example:
                status: success
                data:
                  - '::ffff:91.238.104.205'
                  - '::ffff:192.81.130.145'
                  - '::ffff:167.86.71.144'
                  - '::ffff:193.188.15.254'
                  - '::ffff:62.171.188.152'
                  - '::ffff:164.68.125.203'
  /flux/incomingconnectionsinfo:
    get:
      tags:
        - Flux
      summary: Gets info of incoming connections
      description: Gets the address and port of each incoming connection. **Public**
      operationId: incomingConnectionsInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        ip:
                          type: string
                          description: Ip address of incoming connection
                        port:
                          type: string
                          description: API port of the connecting node
              example:
                status: success
                data:
                  - ip: 91.238.104.205
                    port: '16127'
                  - ip: 192.81.130.145
                    port: '16137'
  /flux/checkfluxavailability:
    get:
      tags:
        - Flux
      summary: Check availability of Flux
      description: >-
        Check if Flux is reachable and available using IP of the Flux's
        server. **Public**
      operationId: checkFluxAvailability
      security: []
      parameters:
        - in: query
          name: ip
          required: true
          schema:
            type: string
          description: Ip address
          example: 193.188.15.245
        - in: query
          name: port
          required: false
          schema:
            type: string
          description: API port of the node being checked; the default FluxOS port when omitted
          example: 16127
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: sucess
                data:
                  message: Asking Flux is available
  /flux/checkcommunication:
    get:
      tags:
        - Flux
      summary: Check incoming/outgoing peers
      description: Check if there is enough incoming/outgoing peers. **Public**
      operationId: isCommunicationEstablished
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Communication to Flux network is properly established
  /flux/uptime:
    get:
      tags:
        - Flux
      summary: FluxOS uptime
      description: Return FluxOS uptime in seconds. **Public**
      operationId: FluxUptime
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                   type: integer
              example:
                status: success
                data: 467
  /flux/broadcastmessage:
    post:
      tags:
        - Flux
      summary: Broadcast message to peers
      description: Broadcast data message to peers that are connected. **AdminAndFluxTeam**
      operationId: broadcastMessageFromUserPost
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              description: Any JSON object; the whole posted body is broadcast as-is
              properties:
                data:
                  type: string
                  description: Example field only; nothing is extracted from the body
            example:
              data: a7a5b90b25ccc0a8379ec960c103103390369d1d6d18f88281372b944531dc23
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Message successfully broadcasted to Flux network
    get:
      tags:
        - Flux
      summary: Broadcast message to peers
      description: Broadcast data message to peers that are connected. **AdminAndFluxTeam**
      security:
        - FluxID: []
      parameters:
        - in: query
          name: data
          required: true
          schema:
            type: string
          description: The message
          example: a7a5b90b25ccc0a8379ec960c103103390369d1d6d18f88281372b944531dc23
      operationId: broadcastMessageFromUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Message successfully broadcasted to Flux network
  /flux/broadcastmessagetooutgoing:
    post:
      tags:
        - Flux
      summary: Broadcast message to outgoing peers
      description: >-
        **Deprecated.** Delegates to the same handler as
        `/flux/broadcastmessage`, which broadcasts to every peer rather than only
        outgoing ones; use that endpoint instead. **AdminAndFluxTeam**
      operationId: broadcastMessageToOutgoingFromUserPost
      deprecated: true
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              description: Any JSON object; the whole posted body is broadcast as-is
              properties:
                data:
                  type: string
                  description: Example field only; nothing is extracted from the body
            example:
              data: a7a5b90b25ccc0a8379ec960c103103390369d1d6d18f88281372b944531dc23
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Message successfully broadcasted to Flux network
    get:
      tags:
        - Flux
      summary: Broadcast message to outgoing peers
      description: >-
        **Deprecated.** Delegates to the same handler as
        `/flux/broadcastmessage`, which broadcasts to every peer rather than only
        outgoing ones; use that endpoint instead. **AdminAndFluxTeam**
      operationId: broadcastMessageToOutgoingFromUser
      deprecated: true
      security:
        - FluxID: []
      parameters:
        - in: query
          name: data
          required: true
          schema:
            type: string
          description: The message
          example: a7a5b90b25ccc0a8379ec960c103103390369d1d6d18f88281372b944531dc23
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Message successfully broadcasted to Flux network
  /flux/broadcastmessagetoincoming:
    post:
      tags:
        - Flux
      summary: Broadcast message to incoming peers
      description: >-
        **Deprecated.** Delegates to the same handler as
        `/flux/broadcastmessage`, which broadcasts to every peer rather than only
        incoming ones; use that endpoint instead. **AdminAndFluxTeam**
      operationId: broadcastMessageToIncomingFromUserPost
      deprecated: true
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              description: Any JSON object; the whole posted body is broadcast as-is
              properties:
                data:
                  type: string
                  description: Example field only; nothing is extracted from the body
            example:
              data: a7a5b90b25ccc0a8379ec960c103103390369d1d6d18f88281372b944531dc23
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Message successfully broadcasted to Flux network
    get:
      tags:
        - Flux
      summary: Broadcast message to incoming peers
      description: >-
        **Deprecated.** Delegates to the same handler as
        `/flux/broadcastmessage`, which broadcasts to every peer rather than only
        incoming ones; use that endpoint instead. **AdminAndFluxTeam**
      operationId: broadcastMessageToIncomingFromUser
      deprecated: true
      security:
        - FluxID: []
      parameters:
        - in: query
          name: data
          required: true
          schema:
            type: string
          description: The message
          example: a7a5b90b25ccc0a8379ec960c103103390369d1d6d18f88281372b944531dc23
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Message successfully broadcasted to Flux network
  /flux/addpeer:
    get:
      tags:
        - Flux
      summary: Add peer option
      description: >-
        This call gives option to add peers to outgoing connections.
        **AdminAndFluxTeam**
      operationId: addPeer
      security:
        - FluxID: []
      parameters:
        - in: query
          name: ip
          required: true
          schema:
            type: string
          description: Ip of peer to add
          example: 49.12.8.215
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Outgoing connection to 49.12.8.215 initiated
  /flux/removepeer:
    get:
      tags:
        - Flux
      summary: Remove peer option
      description: >-
        This call does exact opposite of add and removes/drops a outgoing
        connected peer. **AdminAndFluxTeam**
      operationId: removePeer
      security:
        - FluxID: []
      parameters:
        - in: query
          name: ip
          required: true
          schema:
            type: string
          description: Ip of peer to remove
          example: 49.12.8.215
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Outgoing connection to 49.12.8.215 closed
  /flux/removeincomingpeer:
    get:
      tags:
        - Flux
      summary: Remove incoming peer
      description: Remove a incoming connected peer. **AdminAndFluxTeam**
      operationId: removeIncomingPeer
      security:
        - FluxID: []
      parameters:
        - in: query
          name: ip
          required: true
          schema:
            type: string
          description: Ip of peer to remove
          example: 49.12.8.215
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Incoming connection to 49.12.8.215 closed
  /flux/allowport:
    get:
      tags:
        - Flux
      summary: Open port on server
      description: >-
        This will open a port on the server and adding it to the firewall rules.
        **AdminAndFluxTeam**
      operationId: allowPortApi
      security:
        - FluxID: []
      parameters:
        - in: query
          name: port
          required: true
          schema:
            type: integer
          description: Port number to open
          example: 22222
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      code:
                        type: integer
                        description: Port number
                      name:
                        type: integer
                        description: Port number
                      message:
                        type: string
                        description: Explanation of status
              example:
                status: success
                data:
                  code: 22222
                  name: 22222
                  message: |-
                    Rule added
                    Rule added (v6)
  /flux/adjustkadena:
    get:
      tags:
        - Flux
      summary: Adjust Kadena Account
      description: Essentially rebuilds flux - use with caution! **Admin**
      operationId: adjustKadenaAccount
      security:
        - FluxID: []
      parameters:
        - in: query
          name: account
          required: true
          schema:
            type: string
          description: Kadena Account
          example: k:7a1529b3a07fate32d75684ab20bdde61545d60f1c6bcbf2489fef857a316652
        - in: query
          name: chainid
          required: true
          schema:
            type: string
          description: Kadena ChainID
          example: 0
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Kadena account adjusted
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /flux/startbenchmark:
    get:
      tags:
        - Flux
      summary: Start Benchmark
      description: This call will start the benchmark which tests the hardware specifications and performance. **AdminAndFluxTeam**
      operationId: fluxstartBenchmark
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Start performance benchmark
              example:
                status: success
                data:
                  message: Benchamrk successfully started
  /flux/restartbenchmark:
    get:
      tags:
        - Flux
      summary: Restart Benchmark
      description: This call will restart the benchmark which tests the hardware specifications and performance. **AdminAndFluxTeam**
      operationId: fluxrestartbenchmark
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Restart performance benchmark
              example:
                status: success
                data:
                  message: Benchamrk successfully restarted
  /flux/softupdateflux:
    get:
      tags:
        - Flux
      summary: Soft Update Flux
      description: This call will perform a soft update of Flux. **AdminAndFluxTeam**
      operationId: softUpdateFlux
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Perform a soft update of Flux
              example:
                status: success
                data:
                  message: Flux successfully updated using soft method
  /flux/softupdatefluxinstall:
    get:
      tags:
        - Flux
      summary: Install Flux
      description: This call will install Flux. **AdminAndFluxTeam**
      operationId: softUpdateFluxInstall
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Install Flux
              example:
                status: success
                data:
                  message: Flux successfully updated softly with installation
  /flux/warnlog:
    get:
      tags:
        - Flux
      summary: Warning Log
      description: This call returns the Flux warning log. **AdminAndFluxTeam**
      operationId: fluxWarnLog
      security:
        - FluxID: []
      responses:
        '200':
          description: >-
            The log file itself, sent as a download (attachment `warn.log`),
            not a JSON envelope. An unauthorised call is answered with the JSON
            error envelope.
          content:
            text/plain:
              schema:
                type: string
                description: Warning log
              example:
                2022-01-23T15:23:33.638Z          Daemon not yet synced. Flux discovery is awaiting.
                2022-01-23T15:25:33.655Z          Node not confirmed. Flux discovery is awaiting.
                2022-01-23T15:27:33.869Z          Unexpected token B in JSON at position 0
                2022-01-23T15:29:34.535Z          Flux IP not detected. Flux discovery is awaiting.
  /flux/debuglog:
    get:
      tags:
        - Flux
      summary: Debug Log
      description: This call returns the Flux debug log. **AdminAndFluxTeam**
      operationId: fluxDebugLog
      security:
        - FluxID: []
      responses:
        '200':
          description: >-
            The log file itself, sent as a download (attachment `debug.log`),
            not a JSON envelope. An unauthorised call is answered with the JSON
            error envelope.
          content:
            text/plain:
              schema:
                type: string
                description: Debug log
              example:
                2022-01-23T15:23:33.049Z          Flux running on port 16127!
                2022-01-23T15:23:33.051Z          Initiating MongoDB connection
                2022-01-23T15:23:33.075Z          Flux Home running on port 16126!
                2022-01-23T15:23:33.106Z          DB connected
                2022-01-23T15:23:33.106Z          Preparing local database...
                2022-01-23T15:23:33.471Z          Local database prepared
                2022-01-23T15:23:33.472Z          Preparing temporary database...
                2022-01-23T15:23:33.505Z          Temporary database prepared
                2022-01-23T15:23:33.505Z          Preparing Flux Apps locations
                2022-01-23T15:23:33.554Z          Flux Apps locations prepared
                2022-01-23T15:23:33.571Z          Firewalls checked
                2022-01-23T15:23:33.572Z          Connections polling prepared
                2022-01-23T15:23:33.580Z          Flux Daemon Info Service Started
                2022-01-23T15:23:33.619Z          Flux checks operational
                2022-01-23T15:23:33.638Z          Daemon not yet synced. Flux discovery is awaiting.
                2022-01-23T15:23:33.639Z          Flux Discovery started
  /flux/infolog:
    get:
      tags:
        - Flux
      summary: Info Log
      description: This call returns the Flux info log. **AdminAndFluxTeam**
      operationId: fluxInfoLog
      security:
        - FluxID: []
      responses:
        '200':
          description: >-
            The log file itself, sent as a download (attachment `info.log`),
            not a JSON envelope. An unauthorised call is answered with the JSON
            error envelope.
          content:
            text/plain:
              schema:
                type: string
                description: Info log
              example:
                2022-01-23T15:23:33.047Z          Flux running on port 16127!
                2022-01-23T15:23:33.050Z          Initiating MongoDB connection
                2022-01-23T15:23:33.071Z          Flux Home running on port 16126!
                2022-01-23T15:23:33.105Z          DB connected
                2022-01-23T15:23:33.106Z          Preparing local database...
                2022-01-23T15:23:33.431Z          Local database prepared
                2022-01-23T15:23:33.472Z          Preparing temporary database...
                2022-01-23T15:23:33.505Z          Temporary database prepared
                2022-01-23T15:23:33.505Z          Preparing Flux Apps locations
                2022-01-23T15:23:33.554Z          Flux Apps locations prepared
                2022-01-23T15:23:33.571Z          Firewalls checked
  /flux/tailwarnlog:
    get:
      tags:
        - Flux
      summary: Tail Warn Log
      description: This call returns the Flux tail warn log. **AdminAndFluxTeam**
      operationId: tailFluxWarnLog
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                description: Tail warn log
              example:
                status: success
                data:
                  message:
                    2022-01-23T16:44:33.266Z          Message received from outgoing peer 167.86.116.93 but is not an originating node of 043adf786dbfc86b8ca741deb589c75b5aa05e99416af5489a6407683c3ef88d30eab6b5cfab869d8def357c46db6bf553b4cb17104219065a17519a8a2596da92.\n
                    2022-01-23T16:44:34.856Z          Message received from outgoing peer 167.86.121.80 but is not an originating node of 043d50eb6288db8991a893d00014a0c9bf3ca4baac923eee2e65fae746b5ef41ccd26508ca5e8ef2f0092fc22cd7306b4c1da900eca5f27ee995786f58f6254c79.\n
                    2022-01-23T16:44:36.225Z          Message received from incoming peer ::ffff:194.163.176.204 but is not an originating node of 042dd35e0ccf4df99b63768a974b16f6b00fe8cf087320db13942689230ad3a8817f5d98dc0deb8b899a6794cc7ec7771295b54782c8ad52c07c8cedebe83772f5.
  /flux/taildebuglog:
    get:
      tags:
        - Flux
      summary: Tail Debug Log
      description: This call returns the Flux tail debug log. **AdminAndFluxTeam**
      operationId: tailFluxDebugLog
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                description: Tail debug log
              example:
                status: success
                data:
                  message:
                    2022-01-23T17:02:21.941Z          Transaction c70cd93576c5717621f75ca9509c113266a0e19559b61784443845c6cb4865d0 1 not found in database. Falling back to blockchain data\n
                    2022-01-23T17:02:22.327Z          Transaction 8a6118a60b845250d747f66ecb2eb702eb7ed29c7567745788f9e81d4c3a0f3a 1 not found in database. Falling back to blockchain data\n
                    2022-01-23T17:02:22.470Z          Transaction 04b86bbc7a3cd64752032f29d6ef6f6f859bfe86ac5026ecc8d5e8dfa7c29160 0 not found in database. Falling back to blockchain data\n
  /flux/tailinfolog:
    get:
      tags:
        - Flux
      summary: Tail Info Log
      description: This call returns the Flux tail info log. **AdminAndFluxTeam**
      operationId: tailFluxInfoLog
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                description: Tail info log
              example:
                status: success
                data:
                  message:
                    2022-01-23T17:02:23.458Z          Transaction 03dcc45f7c265d73db3e53c98a94c1a52841ac10c7774c6a1942fb602bd7712c 1 not found in database. Falling back to blockchain data\n
                    2022-01-23T17:02:23.600Z          Transaction e141049a8de186b718313343bb08f0341c6273eccd424a4b4d5c5bee599ad713 0 not found in database. Falling back to blockchain data\n
                    2022-01-23T17:02:23.793Z          Transaction 5e59328a1f97ee3335b23ac550236cdcc022bea86cc78e3dddf0674e2d0fd129 0 not found in database. Falling back to blockchain data\n
  /flux/backendfolder:
    get:
      tags:
        - Flux
      summary: Local Folder Location
      description: >-
        Returns the FluxOS backend folder on this node. **Reachable only from
        the node itself** — the route admits loopback callers (`127.0.0.1`,
        `::1`) by socket address only, so no `zelidauth` header is required and
        none helps from elsewhere; other callers get `401` with the plain-text
        body `Access denied`. **Public** (localhost only)
      operationId: fluxBackendFolder
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                description: Backend folder location
              example:
                status: success
                data: /home/username/flux/ZelBack/
        '401':
          description: Caller is not on the loopback address (plain-text `Access denied`)
  /flux/mapport:
    get:
      tags:
        - Flux
      summary: Map a specified port (UPnP)
      description: This call map a specified port (UPnP). **AdminAndFluxTeam**
      operationId: fluxMapport
      parameters:
        - in: query
          name: port
          required: true
          schema:
            type: integer
          description: Port number
          example: 666
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                        description: Explanation of status
              example:
                status: success
                data:
                  message: Port mapped
  /flux/unmapport:
    get:
      tags:
        - Flux
      summary: Unmap a specified port (UPnP)
      description: This call unmap a specified port (UPnP). **AdminAndFluxTeam**
      operationId: fluxUnmapport
      parameters:
        - in: query
          name: port
          required: true
          schema:
            type: integer
          description: Port number
          example: 666
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                        description: Explanation of status
              example:
                status: success
                data:
                  message: Port unmapped
  /flux/getmap:
    get:
      tags:
        - Flux
      summary:  Show list with mappings (UPnP)
      description: This call show message with mappings (UPnP). **AdminAndFluxTeam**
      operationId: fluxGetMap
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
              example:
                status: success
                data:
                  - public:
                      host: ''
                      port: 31111
                    private:
                      host: 192.168.1.105
                      port: 31111
                    protocol: tcp
                    enabled: false
                    description: Flux_App_StreamrNode1681108241435
                    ttl: 0
                    local: false
                  - public:
                      host: ''
                      port: 31112
                    private:
                      host: 192.168.1.105
                      port: 31112
                    protocol: tcp
                    enabled: false
                    description: Flux_App_StreamrNode1681108241435
                    ttl: 0
                    local: false
                  - public:
                      host: ''
                      port: 31113
                    private:
                      host: 192.168.1.105
                      port: 31113
                    protocol: tcp
                    enabled: false
                    description: Flux_App_StreamrNode1681108241435
                    ttl: 0
                    local: false
                  - public:
                      host: ''
                      port: 16137
                    private:
                      host: 192.168.1.102
                      port: 16137
                    protocol: tcp
                    enabled: false
                    description: Flux_Backend_API
                    ttl: 0
                    local: false
                  - public:
                      host: ''
                      port: 16136
                    private:
                      host: 192.168.1.102
                      port: 16136
                    protocol: tcp
                    enabled: false
                    description: Flux_Home_UI
                    ttl: 0
                    local: false
                  - public:
                      host: ''
                      port: 16177
                    private:
                      host: 192.168.1.106
                      port: 16177
                    protocol: tcp
                    enabled: false
                    description: Flux_Backend_API
                    ttl: 0
                    local: true
                  - public:
                      host: ''
                      port: 16176
                    private:
                      host: 192.168.1.106
                      port: 16176
                    protocol: tcp
                    enabled: false
                    description: Flux_Home_UI
                    ttl: 0
                    local: true
  /flux/getip:
    get:
      tags:
        - Flux
      summary:  Show public IP address (UPnP)
      description: This call show public IP address (UPnP). **AdminAndFluxTeam**
      operationId: fluxGetip
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: 84.28.5.7
  /flux/getgateway:
    get:
      tags:
        - Flux
      summary:  Show gateway address (UPnP)
      description: This call show a message with gateway address (UPnP). **AdminAndFluxTeam**
      operationId: fluxGetGateway
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data:
                  gateway:
                    description: http://192.168.1.1:2189/rootDesc.xml
                    services:
                      - urn:schemas-upnp-org:service:WANIPConnection:1
                      - urn:schemas-upnp-org:service:WANIPConnection:2
                      - urn:schemas-upnp-org:service:WANPPPConnection:1
                  address: 192.168.1.106
                  
  /flux/routerip:
    get:
      tags:
        - Flux
      summary: To show the current user's Router IP setup.
      description: To show the current user's Router IP setup in configuration file that is being used with FluxO. **Public**
      operationId: fluxRouterip
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: '196.53.8.65'
  /flux/adjustrouterip:
    get:
      tags:
        - Flux
      summary: Update the current routerIP.
      description: Update the current routerIP that is being used with FluxOS. **Admin**
      operationId: fluxAdjustrouterip
      parameters:
        - in: query
          name: routerip
          schema:
            type: string
          example: '196.53.8.65'
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: 'Router IP adjusted'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /flux/apiport:
    get:
      tags:
        - Flux
      summary: Show the current user's Api Port setup in configuration file that is being used by FluxOS.
      description: Show the current user's Api Port. **Public**
      operationId: fluxApiport
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Api Port
              example:
                status: success
                data: 16127
  /flux/adjustapiport:
    get:
      tags:
        - Flux
      summary: Update Api Port setup in configuration file that is being used by FluxOS.
      description: Update the API port in the node configuration. **Admin**
      operationId: fluxAdjustapiport
      security:
        - FluxID: []
      parameters:
        - in: query
          name: apiport
          required: true
          schema:
            type: integer
            enum: [16127, 16137, 16147, 16157, 16167, 16177, 16187, 16197]
          description: New API port; any other value answers `API Port not valid`
          example: 16127
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: API Port adjusted
  /flux/marketplaceurl:
    get:
      tags:
        - Flux
      summary: Show marketplace URL.
      description: Show marketplace URL based on current development flag setup in configuration file that is being used with FluxOS. **Public**
      operationId: fluxMarketplaceurl
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Api Port
              example:
                status: success
                data: https://stats.runonflux.io/marketplace/listapps
  /flux/restart:
    get:
      tags:
        - Flux
      summary: Restart FluxOS.
      description: Restart FluxOS (pm2 restart). **AdminAndFluxTeam**
      operationId: fluxRestart
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: Restarting FluxOS
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /flux/systemuptime:
    get:
      tags:
        - Flux
      summary: Show system uptime.
      description: Show system uptime in seconds. **Public**
      operationId: fluxSystemuptime
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: number
                    description: System uptime in seconds
              example:
                status: success
                data: 2531565
  /flux/nodejsversions:
    get:
      tags:
        - Flux
      summary: Show nodejs entire versions object.
      description: Show nodejs entire versions object. **Public**
      operationId: fluxNodejsversions
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    description: Nodejs entire versions object
              example:
                status: success
                data:
                  node: 16.20.2
                  v8: 9.4.146.26-node.26
                  uv: 1.43.0
                  zlib: 1.2.11
                  brotli: 1.0.9
                  ares: 1.19.1
                  modules: '93'
                  nghttp2: 1.47.0
  /flux/fluxids:
    get:
      tags:
        - Flux
      summary: Get all Flux IDs
      description: The Flux team's FluxID and the Flux support team's FluxIDs configured on this node. **Public**
      operationId: getFluxIds
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      fluxTeamFluxID:
                        type: string
                      fluxSupportTeamFluxID:
                        type: array
                        items:
                          type: string
              example:
                status: success
                data:
                  fluxTeamFluxID: 1hjy4bCYBJr4mny4zCE85J94RXa8W6q37
                  fluxSupportTeamFluxID:
                    - 16dNCFf7nR3nx5iwn2RQMBw6KcJXkE3JC1
                    - 15c3aH6y9Koq1Dg1rGXE9Ypn5nL2AbSJCu
                    - 1NGqYirE4T9wzd1ZcGrw3HjETiuCkt6Sgy
                    - 13BBPcpHxwCaC61vjQgK6qeDcprFJEGVkP
  /flux/isarcaneos:
    get:
      tags:
        - Flux
      summary: Check if running on ArcaneOS
      description: Check if the node is running on ArcaneOS (specialized Flux operating system). **Public**
      operationId: isArcaneOs
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: boolean
                    description: True if running on ArcaneOS
              example:
                status: success
                data: true
  /flux/streamchainpreparation:
    get:
      tags:
        - Flux
      summary: Stream chain preparation
      description: >-
        Prepares this node to stream its blockchain: checks that the local
        daemon is synced (tip no older than 10 minutes) and that the node is not
        within 30 blocks of its confirmation window, then stops the daemon and
        watchdog. If no `POST /flux/streamchain` starts within 30 seconds they
        are started again. **Reachable only from the node's own local network**
        (a private RFC 1918 address) — the caller is identified by its socket
        address, so no `zelidauth` header is required. Refusals carry the reason
        in the HTTP status text: `403` for a caller outside the private network,
        `422` when streaming is disabled for failing the minimum throughput
        criteria, and `503` while another stream is already in progress, when
        the daemon is not synced or cannot be queried, when the node is outside
        its maintenance window, or when a service could not be stopped.
        **Public** (local network only)
      operationId: streamChainPreparation
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Daemon stopped, you can start stream chain functionality
        '403':
          description: Caller is not on a private (RFC 1918) address
        '422':
          description: Streaming disabled after failing the minimum throughput criteria
        '503':
          description: >-
            Another stream is in progress, the daemon is not synced or cannot be
            queried, the node is outside its maintenance window, or a service
            could not be stopped
  /flux/streamchain:
    post:
      tags:
        - Flux
      summary: Stream blockchain data
      description: >-
        Streams this node's blockchain data to another node on the same local
        network. Call `GET /flux/streamchainpreparation` first so the daemon is
        stopped. **Reachable only from the node's own local network** — the
        caller is identified by its socket address, so no `zelidauth` header is
        required. **Public** (local network only)
      operationId: streamChain
      security: []
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                unsafe:
                  type: boolean
                  default: false
                  description: >-
                    Stream even though the daemon is still running (the copy may
                    be inconsistent); refused together with `compress`
                compress:
                  type: boolean
                  default: false
                  description: Gzip the tar stream on the fly (10-20x slower)
            example:
              compress: false
      responses:
        '200':
          description: >-
            The daemon's `determ_zelnodes`, `chainstate` and `blocks` folders as
            a tar stream (gzip when `compress` is set). A stream slower than
            200 Mbps after 35 seconds is cut and further streams are disabled.
          headers:
            Approx-Content-Length:
              description: Estimated size of the stream in bytes
              schema:
                type: integer
          content:
            application/x-tar:
              schema:
                type: string
                format: binary
        '403':
          description: Caller is not on a private (RFC 1918) address
        '422':
          description: Streaming disabled after failing the throughput criteria, or `unsafe` with `compress`
        '500':
          description: Chain folders not found
        '503':
          description: Another stream is in progress, or the daemon is still running (without `unsafe`)
  /flux/checkappavailability:
    post:
      tags:
        - Flux
      summary: Check application port availability
      description: >-
        Asks this node to test whether application ports are reachable on the
        caller's address. Used between Fluxnodes: the ask must be signed by a
        Fluxnode on the deterministic list (`pubKey`, and `signature` over the
        JSON of the body without `signature`). The address tested is the
        caller's own socket address; only the Flux team, which may skip the
        signature by sending a `zelidauth` header, may name another with `ip`.


        Up to 50 ports are tested in sequence; ports outside the application
        range or banned on Flux are skipped, and the first port that does not
        answer fails the check. With `echo: true` each port is read rather than
        just connected to, and `data.answered` returns the first 256 bytes each
        answered with.


        The handler reads the raw request stream: send the JSON as
        `text/plain`. With `Content-Type: application/json` the request never
        answers. **FluxTeam** (or a signed Fluxnode request)
      operationId: checkAppAvailability
      security:
        - FluxID: []
        - {}
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              required:
                - ports
              properties:
                ports:
                  type: array
                  maxItems: 50
                  items:
                    type: integer
                  description: Application ports to test
                port:
                  type: integer
                  description: The asking node's API port; only echoed in the answer message
                ip:
                  type: string
                  description: >-
                    Address to test. Honoured for the Flux team only; every other
                    caller is tested on its own socket address
                echo:
                  type: boolean
                  description: Read each port and return what it answered, in `data.answered`
                pubKey:
                  type: string
                  description: Public key of the asking Fluxnode
                signature:
                  type: string
                  description: The Fluxnode's signature over the JSON of this body without `signature`
            example:
              ports:
                - 31350
                - 31351
              port: 16127
              echo: true
              pubKey: 04a1f3d...
              signature: H+ZB3oSrsw6XkBxxlbwk33LEBJ...
      responses:
        '200':
          description: >-
            OK. A failed check is also HTTP 200, as an error envelope:
            `Unable to verify request authenticity`, `No ports to test`,
            `Too many ports to test. Maximum of 50 allowed.`, or
            `Flux Applications on <ip>:<port> are not available. Failed port: <port>`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                      answered:
                        type: object
                        additionalProperties:
                          type: string
                        description: Only with `echo`; port to the first bytes it answered with
              example:
                status: success
                data:
                  message: Flux Applications on 202.61.234.13:16127 are available.
                  answered:
                    '31350': "HTTP/1.1 200 OK\r\n..."
  /flux/keepupnpportsopen:
    post:
      tags:
        - Flux
      summary: Keep UPnP port mappings alive
      description: >-
        Asks this node to poke the caller's ports so the caller's router keeps
        its UPnP mappings open. The ask must be signed by a Fluxnode on the
        deterministic list (`pubKey`, and `signature` over the JSON of the body
        without `signature`) and carry a `timestamp` no more than 10 minutes
        old. The address poked is the caller's own socket address; only the
        Flux team, which may skip the signature by sending a `zelidauth`
        header, may name another with `ip`.


        This node first checks it can reach
        `http://<address>:<apiPort>/flux/uptime` within 3 seconds, then answers
        `202` and opens a TCP connection to, and sends one UDP datagram to, each
        port in turn. Every answer has an empty body. **FluxTeam** (or a signed
        Fluxnode request)
      operationId: keepUPNPPortsOpen
      security:
        - FluxID: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - apiPort
                - ports
                - timestamp
              properties:
                apiPort:
                  type: integer
                  description: The caller's API port, checked for reachability first
                ports:
                  type: array
                  maxItems: 10004
                  items:
                    type: integer
                  description: Ports to poke on the caller's address
                timestamp:
                  type: integer
                  description: Unix seconds; refused when more than 600 seconds old
                ip:
                  type: string
                  description: >-
                    Address to poke. Honoured for the Flux team only; every other
                    caller is poked on its own socket address
                pubKey:
                  type: string
                signature:
                  type: string
            example:
              apiPort: 16127
              ports:
                - 16126
                - 16122
                - 16128
                - 16129
                - 31350
              timestamp: 1772719200
              pubKey: 04a1f3d...
              signature: H+ZB3oSrsw6XkBxxlbwk33LEBJ...
      responses:
        '202':
          description: Accepted; the ports are poked after the response. Empty body.
        '401':
          description: Not signed by a listed Fluxnode, and not the Flux team. Empty body.
        '422':
          description: Missing or stale `timestamp`, missing `apiPort`, or `ports` not an array of at most 10,004 integers. Empty body.
        '503':
          description: The caller's API port could not be reached back. Empty body.
  #Volume Browser
  /apps/getfolderinfo:
     get:
      tags:
        - Volume Browser
      summary: Get a list of files with their details for all files.
      description: >-
        Get a list of files with their details for all files. Syncthing control
        files, `lost+found` and file-operation staging at the volume root are
        not listed, and asking for one by path is refused. **AppOwnerAbove**
      operationId: fluxGetfolderinfo
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          example: FoldingAtRunOnFlux11
        - in: query
          name: component
          required: true
          schema:
            type: string
          example: FoldingAtHome
        - in: query
          name: folder
          schema:
            type: string
          example: ddd         
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
              example:
                status: success
                data:
                  - name: fluxredis_ethercalc (2).tar.gz
                    size: 138008536
                    isDirectory: false
                    isFile: true
                    isSymbolicLink: false
                    createdAt: '2024-03-12T08:57:40.817Z'
                    modifiedAt: '2024-03-12T08:58:19.263Z'
  /apps/createfolder:
     get:
      tags:
        - Volume Browser
      summary: Create folder.
      description: Create folder inside app volume. **AppOwnerAbove**
      operationId: fluxCreatefolder
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          example: FoldingAtRunOnFlux11
        - in: query
          name: component
          required: true
          schema:
            type: string
          example: FoldingAtHome
        - in: query
          name: folder
          required: true
          schema:
            type: string
          example: ddd         
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data:
                  message: Folder Created
        '503':
          description: >-
            Refused before any work starts: another file operation is running
            for this application, the node is at its concurrent-operation limit,
            the file-operation image is still being fetched, or the node is
            still reconciling its applications after boot. `Retry-After` says
            when to retry; `data.operation` (jobId, kind, statusUrl) names the
            operation being waited behind, when there is one.
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
  /apps/renameobject:
     get:
      tags:
        - Volume Browser
      summary: Rename file/folder
      description: Rename file/folder. **AppOwnerAbove**
      operationId: fluxRenameobject
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          example: FoldingAtRunOnFlux11
        - in: query
          name: component
          required: true
          schema:
            type: string
          example: FoldingAtHome
        - in: query
          name: oldpath
          required: true
          schema:
            type: string
          example: ddd 
          description: old path name inside volume with file/folder name
        - in: query
          name: newname
          required: true
          description: New name only (no `/`); the entry is renamed within its current folder. An existing name is refused — use POST /apps/moveobject to move or overwrite.
          schema:
            type: string
          example: ccc             
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data:
                  message: Rename successful
        '503':
          description: >-
            Refused before any work starts: another file operation is running
            for this application, the node is at its concurrent-operation limit,
            the file-operation image is still being fetched, or the node is
            still reconciling its applications after boot. `Retry-After` says
            when to retry; `data.operation` (jobId, kind, statusUrl) names the
            operation being waited behind, when there is one.
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
  /apps/removeobject:
     get:
      tags:
        - Volume Browser
      summary: Remove file/folder
      description: >-
        Remove file/folder. Answers 200 with the completed operation when the
        delete finishes within 10 seconds, otherwise `202 Accepted` with a
        `jobId` to poll at `GET /apps/operations/{jobId}`. Deleting a path that
        does not exist succeeds. **AppOwnerAbove**
      operationId: fluxRemoveobject
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          example: FoldingAtRunOnFlux11
        - in: query
          name: component
          required: true
          schema:
            type: string
          example: FoldingAtHome
        - in: query
          name: object
          required: true
          schema:
            type: string
          example: ddd 
          description: path name inside volume with file/folder name
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      jobId:
                        type: string
                      statusUrl:
                        type: string
                      status:
                        type: string
                        description: The operation's terminal status
              example:
                status: success
                data:
                  jobId: op_2f8f1a1c-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  statusUrl: /apps/operations/op_2f8f1a1c-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  status: Succeeded
        '202':
          $ref: '#/components/responses/OperationAccepted'
        '503':
          description: >-
            Refused before any work starts: another file operation is running
            for this application, the node is at its concurrent-operation limit,
            the file-operation image is still being fetched, or the node is
            still reconciling its applications after boot. `Retry-After` says
            when to retry; `data.operation` (jobId, kind, statusUrl) names the
            operation being waited behind, when there is one.
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
  /apps/downloadfile:
   get:
    tags:
      - Volume Browser
    summary: Download file
    description: >-
      Download file. A path that reaches Syncthing control files, `lost+found`
      or file-operation staging at the volume root is refused. **AppOwnerAbove**
    operationId: fluxDownloadFile
    security:
      - FluxID: []
    parameters:
      - in: query
        name: appname
        required: true
        schema:
          type: string
        example: FoldingAtRunOnFlux11
      - in: query
        name: component
        required: true
        schema:
          type: string
        example: FoldingAtHome
      - in: query
        name: file
        required: true
        schema:
          type: string
        example: notes.txt
        description: full path inside volume to file
    responses:
      '200':
        description: OK
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
  /apps/downloadfolder:
   get:
    tags:
      - Volume Browser
    summary: Download folder as a zip archive
    description: >-
      Download folder as a zip archive, streamed as it is built (no
      Content-Length). At the volume root, Syncthing control files,
      `lost+found` and file-operation staging are left out, and a path that
      reaches one is refused. **AppOwnerAbove**
    operationId: fluxDownloadFolder
    security:
      - FluxID: []
    parameters:
      - in: query
        name: appname
        required: true
        schema:
          type: string
        example: FoldingAtRunOnFlux11
      - in: query
        name: component
        required: true
        schema:
          type: string
        example: FoldingAtHome
      - in: query
        name: folder
        required: true
        schema:
          type: string
        example: ddd
        description: full path inside volume to folder
    responses:
      '200':
        description: OK
        content:
          application/zip:
            schema:
              type: string
              format: binary
  #Backup/Restore
  /backup/getvolumedataofcomponent:
    get:
      tags:
        - Backup/Restore
      summary: Get volume data of a component
      description: Get volume data of a component. **AppOwnerAbove**
      operationId: fluxGetvolumedataofcomponent
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Name of the application
          example: FoldingAtRunOnFlux11
        - in: query
          name: component
          required: true
          schema:
            type: string
          description: Component of application
          example: FoldingAtHome
        - in: query
          name: multiplier
          schema:
            type: string
          description: Unit (B, KB, MB, GB); default MB
          example: 'B'
        - in: query
          name: decimal
          schema:
            type: number
          description: Decimal value
          example: 2
        - in: query
          name: fields
          required: false
          schema:
            type: string
          description: Comma-separated subset of mount, size, used, available, capacity, filesystem; all fields when omitted
          example: size,used
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data:
                  size: 3.09
                  used: 0.28
  /backup/getremotefilesize:
    get:
      tags:
        - Backup/Restore
      summary: Get size of a remote file. **AppOwnerAbove**
      description: Get size of a remote file. **AppOwnerAbove**
      operationId: fluxGetremotefilesize
      security:
        - FluxID: []
      parameters:
        - in: query
          name: fileurl
          required: true
          schema:
            type: string
          description: Remote URL
          example: https://go.dev/dl/go1.22.1.darwin-amd64.tar.gz
        - in: query
          name: multiplier
          schema:
            type: string
          description: Unit (B, KB, MB, GB); default B
          example: 'B'
        - in: query
          name: decimal
          schema:
            type: number
          description: Decimal value
          example: 2
        - in: query
          name: number
          schema:
            type: boolean
          description: return only number
          example: true
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name
          example: FoldingAtRunOnFlux11
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: 67267354
  /backup/getlocalbackuplist:
    get:
      tags:
        - Backup/Restore
      summary: Get the list of local backups based on the provided appname
      description: >-
        Get the list of local backups based on the provided appname. `path` must
        be a backup folder (backup/local, backup/upload or backup/remote) inside
        the named application's own volume; any other path is refused with
        "Path validation failed..". **AppOwnerAbove**
      operationId: fluxGetlocalbackuplist
      security:
        - FluxID: []
      parameters:
        - in: query
          name: path
          required: true
          schema:
            type: string
          description: Full path
          example: '%2Fhome%2Fflux01%2Fzelflux%2FZelApps%2FfluxFoldingAtHome_FoldingAtRunOnFlux11%2Fbackup%2Flocal'
        - in: query
          name: multiplier
          schema:
            type: string
          description: Unit (B, KB, MB, GB); default B
          example: 'B'
        - in: query
          name: decimal
          schema:
            type: number
          description: Decimal value
          example: 2
        - in: query
          name: number
          schema:
            type: boolean
          description: return only number
          example: true
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name
          example: FoldingAtRunOnFlux11
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        create:
                          type: string
                        size:
                          type: integer
              example:
                status: success
                data:
                  - name: backup_foldingathome.tar.gz
                    create: '1711116249595'
                    size: 280725761
  /backup/removebackupfile:
    get:
      tags:
        - Backup/Restore
      summary: Remove a backup file.
      description: >-
        Remove a backup file. `filepath` must be a backup file (under
        backup/local, backup/upload or backup/remote) inside the named
        application's own volume; any other path is refused with "Path
        validation failed..". **AppOwnerAbove**
      operationId: fluxRemovebackupfile
      security:
        - FluxID: []
      parameters:
        - in: query
          name: filepath
          required: true
          schema:
            type: string
          description: Full path
          example: '%2Fhome%2Fflux05%2Fzelflux%2FZelApps%2FfluxFoldingAtHome_FoldingAtRunOnFlux11%2Fbackup%2Flocal%2Fbackup_foldingathome.tar.gz'
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name
          example: FoldingAtRunOnFlux11
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                        message:
                          type: boolean
              example:
                status: success
                data:
                  message: true
  /backup/downloadlocalfile:
   get:
    tags:
      - Backup/Restore
    summary: Download a local backup file
    description: >-
      Download a local backup file. `filepath` must be a backup file (under
      backup/local, backup/upload or backup/remote) inside the named
      application's own volume; any other path is refused with "Path
      validation failed..". **AppOwnerAbove**
    operationId: fluxDownloadlocalfile
    security:
      - FluxID: []
    parameters:
      - in: query
        name: filepath
        required: true
        schema:
          type: string
        description: Full path
        example: '%2Fhome%2Fflux05%2Fzelflux%2FZelApps%2FfluxFoldingAtHome_FoldingAtRunOnFlux11%2Fbackup%2Flocal%2Fbackup_foldingathome.tar.gz'
      - in: query
        name: appname
        required: true
        schema:
          type: string
        description: Application name
        example: FoldingAtRunOnFlux11
    responses:
      '200':
        description: OK
        content:
          application/gzip:
            schema:
              type: string
              format: binary
  /apps/appendbackuptask:
    post:
      tags:
      - Backup/Restore
      summary: Append backup task to an application
      description: Append backup task to an application. **AppOwnerAbove**
      operationId: fluxAppendbackuptask
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                appname:
                  type: string
                  description: Name of the application
                  example: FoldingAtRunOnFlux11
                force:
                  type: boolean
                  default: false
                  description: >-
                    Archive a synced component even when this node's copy is not
                    confirmed fully synced; otherwise that is refused with the
                    sync shortfall.
                backup:
                  type: array
                  items:
                    type: object
                    properties:
                      component:
                        type: string
                        description: Name of component
                        example: FoldingAtHome
                      backup:
                        type: boolean
                        description: Whether to perform backup for the component
                        example: true
              example:
                appname: FoldingAtRunOnFlux11
                backup:
                  - component: FoldingAtHome
                    backup: true
      responses:
        '200':
          description: >-
            A stream of plain-text progress lines; a refusal is written into it
            as a line too.
          content:
            text/plain:
              schema:
                type: string
  /apps/appendrestoretask:
    post:
      tags:
      - Backup/Restore
      summary: Append restore task to an application
      description: Append restore task to an application. **AppOwnerAbove**
      operationId: fluxAppendrestoretask
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - appname
                - type
                - restore
              properties:
                appname:
                  type: string
                  description: Name of the application
                  example: FoldingAtRunOnFlux11
                type:
                  type: string
                  enum:
                    - local
                    - remote
                    - upload
                  description: >-
                    Where each component's archive comes from: the volume's
                    backup/local or backup/upload folder, file
                    `backup_<component>.tar.gz` with the component name
                    lower-cased; or, for `remote`, downloaded first from each
                    entry's `url`.
                force:
                  type: boolean
                  default: false
                  description: >-
                    Skip the check that refuses restoring a g: (elected) component
                    on a node other than its current primary.
                restore:
                  type: array
                  items:
                    type: object
                    properties:
                      component:
                        type: string
                        description: Name of component
                        example: FoldingAtHome
                      restore:
                        type: boolean
                        description: Whether to restore this component
                        example: true
                      url:
                        type: string
                        description: Archive URL; required for each restored component when `type` is `remote`
              example:
                appname: FoldingAtRunOnFlux11
                type: local
                restore:
                  - component: FoldingAtHome
                    restore: true
      responses:
        '200':
          description: >-
            A stream of plain-text progress lines; a refusal is written into it
            as a line too.
          content:
            text/plain:
              schema:
                type: string
  #IOUtils
  /ioutils/fileupload:
    post:
      tags:
        - IOUtils
      summary: Upload file
      description: Uploads a file to the specified location. **AppOwnerAbove**
      operationId: fileUpload
      security:
        - FluxID: []
      parameters:
        - in: query
          name: type
          required: false
          schema:
            type: string
          description: >-
            `backup` stores the upload in the component volume's backup/upload
            folder (where appendrestoretask with type upload reads
            backup_<component>.tar.gz) and ignores `folder`; any other value, or
            none, stores it in `folder`.
          example: backup
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Name of the application
          example: FoldingAtRunOnFlux11
        - in: query
          name: component
          required: true
          schema:
            type: string
          description: Component of application
          example: FoldingAtHome
        - in: query
          name: folder
          required: false
          schema:
            type: string
          description: Folder relative to the volume root (created if missing); the volume root when omitted.
          example: ddd/ccc
        - in: query
          name: filename
          required: false
          schema:
            type: string
          description: >-
            Name to store the upload under. When omitted, each file is stored
            under its multipart field name (not the file's original name), so a
            client appends each file under the name it should have.
          example: FoldingAtHome.gzip
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: >-
            A stream rather than one JSON document: `[bytesReceived,bytesExpected]`
            pairs as the body arrives, then each stored file's name as it lands.
            A failure after the stream has started is written into it as the
            error envelope.
          content:
            text/plain:
              schema:
                type: string
              example: '[65536,1048576][1048576,1048576]backup_foldingathome.tar.gz'
        '503':
          description: >-
            Refused before any work starts: another file operation is running
            for this application, the node is at its concurrent-operation limit,
            the file-operation image is still being fetched, or the node is
            still reconciling its applications after boot. `Retry-After` says
            when to retry; `data.operation` (jobId, kind, statusUrl) names the
            operation being waited behind, when there is one.
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
  #Daemon
  /daemon/help:
    get:
      tags:
        - Daemon
      summary: RPC list
      description: >-
        Gets list of RPC for the Flux daemon or if command query is used it
        will respond with the help info for that specified call. The list is
        fluxd's own and still names its wallet and shielded-pool RPCs; FluxOS
        has not routed those since 8.19.0. **Public**
      operationId: help
      security: []
      parameters:
        - in: query
          name: command
          schema:
            type: string
          description: >-
            Accepts both help/command and ?command=getinfo. If omited, default
            help will be displayed.
          example: getmininginfo
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: RPC list
              example:
                status: success
                data: >-
                    == Addressindex ==
                    getaddressbalance {"addresses": ["taddr", ...]}
                    getaddressdeltas {"addresses": ["taddr", ...], ("start": n), ("end": n), ("chainInfo": true|false)}
                    getaddressmempool {"addresses": ["taddr", ...]}
                    getaddresstxids {"addresses": ["taddr", ...], ("start": n), ("end": n)}
                    getaddressutxos {"addresses": ["taddr", ...], ("chainInfo": true|false)}
                  
                    == Benchmarks ==
                    getbenchmarks
                    getbenchstatus
                    startfluxbenchd
                    startzelbenchd
                    stopfluxbenchd
                    stopzelbenchd
                  
                    == Blockchain ==
                    getbestblockhash
                    getblock "hash|height" ( verbosity )
                    getblockchaininfo
                    getblockcount
                    getblockdeltas "blockhash"
                    getblockhash index
                    getblockhashes high low ( {"noOrphans": true|false, "logicalTimes": true|false} )
                    getblockheader "hash" ( verbose )
                    getchaintips
                    getdifficulty
                    getmempoolinfo
                    getrawmempool ( verbose )
                    getspentinfo {"txid": "txidhex", "index": n}
                    gettxout "txid" n ( includemempool )
                    gettxoutproof ["txid",...] ( blockhash )
                    gettxoutsetinfo
                    verifychain ( checklevel numblocks )
                    verifytxoutproof "proof"
                  
                    == Control ==
                    getinfo
                    help ( "command" )
                    stop
                  
                    == Disclosure ==
                    z_getpaymentdisclosure "txid" "js_index" "output_index" ("message") 
                    z_validatepaymentdisclosure "paymentdisclosure"
                  
                    == Fluxnode ==
                    createfluxnodekey
                    createzelnodekey
                    fluxnodecurrentwinner
                    getdoslist
                    getfluxnodecount
                    getfluxnodeoutputs
                    getfluxnodestatus
                    getmigrationcount
                    getstartlist
                    getzelnodecount
                    getzelnodeoutputs
                    getzelnodestatus
                    listfluxnodeconf ( "filter" )
                    listfluxnodes ( "filter" )
                    listzelnodeconf ( "filter" )
                    listzelnodes ( "filter" )
                    startdeterministicfluxnode alias_name lockwallet
                    startdeterministiczelnode alias_name lockwallet
                    startfluxnode "all|alias" lockwallet ( "alias" )
                    startzelnode "all|alias" lockwallet ( "alias" )
                    viewdeterministicfluxnodelist ( "filter" )
                    viewdeterministiczelnodelist ( "filter" )
                    zelnodecurrentwinner
                  
                    == Generating ==
                    generate numblocks
                    getgenerate
                    setgenerate generate ( genproclimit )
                  
                    == Mining ==
                    getblocksubsidy height
                    getblocktemplate ( "jsonrequestobject" )
                    getlocalsolps
                    getmininginfo
                    getnetworkhashps ( blocks height )
                    getnetworksolps ( blocks height )
                    prioritisetransaction <txid> <priority delta> <fee delta>
                    submitblock "hexdata" ( "jsonparametersobject" )
                  
                    == Network ==
                    addnode "node" "add|remove|onetry"
                    clearbanned
                    disconnectnode "node" 
                    getaddednodeinfo dns ( "node" )
                    getconnectioncount
                    getdeprecationinfo
                    getnettotals
                    getnetworkinfo
                    getpeerinfo
                    listbanned
                    ping
                    setban "ip(/netmask)" "add|remove" (bantime) (absolute)
                  
                    == Rawtransactions ==
                    createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,...} ( locktime ) ( expiryheight )
                    decoderawblock "hexstring"
                    decoderawtransaction "hexstring"
                    decodescript "hex"
                    fundrawtransaction "hexstring"
                    getrawtransaction "txid" ( verbose )
                    sendrawtransaction "hexstring" ( allowhighfees )
                    signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype )
                  
                    == Util ==
                    createmultisig nrequired ["key",...]
                    estimatefee nblocks
                    estimatepriority nblocks
                    printsnapshot "time" 
                    validateaddress "fluxaddress"
                    verifymessage "fluxaddress" "signature" "message"
                    z_validateaddress "zaddr"
                  
                    == Wallet ==
                    addmultisigaddress nrequired ["key",...] ( "account" )
                    backupwallet "destination"
                    consolidateutxos (utxo_count)
                    dumpprivkey "t-addr"
                    dumpwallet "folder/filename"
                    encryptwallet "passphrase"
                    getaccount "fluxaddress"
                    getaccountaddress "account"
                    getaddressesbyaccount "account"
                    getbalance ( "account" minconf includeWatchonly )
                    getnewaddress ( "account" )
                    getrawchangeaddress
                    getreceivedbyaccount "account" ( minconf )
                    getreceivedbyaddress "fluxaddress" ( minconf )
                    gettransaction "txid" ( includeWatchonly )
                    getunconfirmedbalance
                    getwalletinfo
                    importaddress "address" ( "label" rescan )
                    importprivkey "zelcashprivkey" ( "label" rescan )
                    importwallet "filename"
                    keypoolrefill ( newsize )
                    listaccounts ( minconf includeWatchonly)
                    listaddressgroupings
                    listlockunspent
                    listreceivedbyaccount ( minconf includeempty includeWatchonly)
                    listreceivedbyaddress ( minconf includeempty includeWatchonly)
                    listsinceblock ( "blockhash" target-confirmations includeWatchonly)
                    listtransactions ( "account" count from includeWatchonly)
                    listunspent ( minconf maxconf  ["address",...] )
                    lockunspent unlock [{"txid":"txid","vout":n},...]
                    move "fromaccount" "toaccount" amount ( minconf "comment" )
                    rescanblockchain (start_height)
                    sendfrom "fromaccount" "tofluxaddress" amount ( minconf "comment" "comment-to" )
                    sendmany "fromaccount" {"address":amount,...} ( minconf "comment" ["address",...] )
                    sendtoaddress "fluxaddress" amount ( "comment" "comment-to" subtractfeefromamount )
                    setaccount "fluxaddress" "account"
                    settxfee amount
                    signmessage "t-addr" "message"
                    z_exportkey "zaddr"
                    z_exportviewingkey "zaddr"
                    z_exportwallet "folder/filename"
                    z_getbalance "address" ( minconf )
                    z_getmigrationstatus
                    z_getnewaddress ( type )
                    z_getoperationresult (["operationid", ... ]) 
                    z_getoperationstatus (["operationid", ... ]) 
                    z_gettotalbalance ( minconf includeWatchonly )
                    z_importkey "zkey" ( rescan startHeight )
                    z_importviewingkey "vkey" ( rescan startHeight )
                    z_importwallet "filename"
                    z_listaddresses ( includeWatchonly )
                    z_listoperationids
                    z_listreceivedbyaddress "address" ( minconf )
                    z_listunspent ( minconf maxconf includeWatchonly ["zaddr",...] )
                    z_mergetoaddress ["fromaddress", ... ] "toaddress" ( fee ) ( transparent_limit ) ( shielded_limit ) ( memo )
                    z_sendmany "fromaddress" [{"address":... ,"amount":...},...] ( minconf ) ( fee )
                    z_setmigration enabled
                    z_shieldcoinbase "fromaddress" "tozaddress" ( fee ) ( limit )
                    zcbenchmark benchmarktype samplecount
                    zcrawjoinsplit rawtx inputs outputs vpub_old vpub_new
                    zcrawkeygen
                    zcrawreceive zcsecretkey encryptednote
                    zcsamplejoinsplit
  /daemon/getinfo:
    get:
      tags:
        - Daemon
      summary: Flux daemon info
      description: >-
        Returns an object containing various state info for the Flux daemon.


        The `balance` field is **redacted for unauthenticated callers** — send a
        node-operator `zelidauth` header to receive it. Everything else is
        public. **Public**
      operationId: getInfo
      security: []
      x-codeSamples:
        - lang: 'curl'
          source: |
            curl -X GET "https://api.runonflux.io/daemon/getinfo"
        - lang: 'JavaScript'
          source: |
            const response = await fetch('https://api.runonflux.io/daemon/getinfo');
            const daemonInfo = await response.json();
            console.log('Daemon version:', daemonInfo.data.version);
            console.log('Block count:', daemonInfo.data.blocks);
        - lang: 'Python'
          source: |
            import requests
            
            response = requests.get('https://api.runonflux.io/daemon/getinfo')
            daemon_info = response.json()
            
            print(f"Daemon version: {daemon_info['data']['version']}")
            print(f"Block count: {daemon_info['data']['blocks']}")
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/daemongetinfo'
              example:
                status: success
                data:
                  version: 6010050
                  protocolversion: 170018
                  walletversion: 60000
                  balance: 0
                  blocks: 1414803
                  timeoffset: 0
                  connections: 33
                  proxy: ''
                  difficulty: 32885.838697886431
                  testnet: false
                  keypoololdest: 1646279801
                  keypoolsize: 101
                  paytxfee: 0
                  relayfee: 0.000001
                  errors: ''
  /daemon/getfluxnodestatus:
    get:
      tags:
        - Daemon
      summary: Flux node status
      description: Returns an object containing various state of the Flux node. **Public**
      operationId: getFluxNodeStatus
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/fluxnodestatus'
              example:
                status: success
                data:
                  status: CONFIRMED
                  collateral: >-
                    COutPoint(5179622de68fac4c052c0ce1affeaa3faaf4624d7332f769f3fc5c42560455b6,
                    0)
                  txhash: >-
                    5179622de68fac4c052c0ce1affeaa3faaf4624d7332f769f3fc5c42560455b6
                  outidx: 0
                  ip: 144.91.114.167
                  network: ipv4
                  added_height: 572386
                  confirmed_height: 572389
                  last_confirmed_height: 586403
                  last_paid_height: 586319
                  tier: NIMMBUS
                  payment_address: t1h7HLNYNmG6mZF8WC6BRLHqCib8hMqP3XC
                  pubkey: >-
                    0485c289e6df683ac2af0ce514260a20cc5a631336fee6bbcb897694134c5a5ad2a5d918f99d70a60c0cb30c705a8c5440f1cbca08e6d3f037320f40751c50555c
                  activesince: 1586334448
                  lastpaid: 1588014482
                  amount: 12500.00
  /daemon/listfluxnodes:
    get:
      tags:
        - Daemon
      summary: Flux node list
      description: Gets a ranked list of Flux nodes. **Public**
      operationId: listFluxNodes
      security: []
      parameters:
        - in: query
          name: filter
          required: false
          schema:
            type: string
          description: Filter the list by FluxNode public key, payment address or collateral `txid:index`
          example: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
        - in: query
          name: limit
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 9999999
          description: >-
            Return only the first `limit` entries of the ranked list. Applied
            only to a successful answer and only when the value is a whole
            number from 1 to 9999999 without a leading zero; any other value
            is ignored and the full list is returned.
          example: 100
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        collateral:
                          type: string
                          description: Collateral txid and output index
                        ip:
                          type: string
                          description: Ip address of Flux server
                        network:
                          type: string
                          description: Network type
                        added_height:
                          type: integer
                          description: Block height Flux node was added to list
                        confirmed_height:
                          type: integer
                          description: Block height Flux node was confirmed by the network
                        last_confirmed_height:
                          type: integer
                          description: Latest block height network confirmed the Flux node
                        last_paid_height:
                          type: integer
                          description: Block the Flux node was last paid
                        tier:
                          type: string
                          description: Tier of Flux node
                        payment_address:
                          type: string
                          description: Address where rewards are paid
                        activesince:
                          type: string
                          description: Active time of Flux node in epoch
                        lastpaid:
                          type: string
                          description: Last paid time in epoch
                        amount:
                          type: string
                          description: Locked collateral amount
                        rank:
                          type: integer
                          description: Rank of Flux node
              example:
                status: success
                data:
                  - collateral: >-
                      COutPoint(826d37f13065e87f77ce1667e035b30933f78462274062aa7e76f249b6ab59db,
                      0)
                    ip: 95.216.236.190
                    network: ipv4
                    added_height: 562050
                    confirmed_height: 562053
                    last_confirmed_height: 588205
                    last_paid_height: 587939
                    tier: CUMULUS
                    payment_address: t1KrT6iKh384mQHwfAPcEFm3U7yFKwhmHbo
                    pubkey: 0439e8b34e799e620b13bca67c6c32682e43f97e67dd777256f50255e36a98bfcf8c2ce4298b0504d3ac6b20bfd2807d425b71f78992e555eacd57fbd8d2aed637
                    activesince: "1585083381"
                    lastpaid: "1588210538"
                    amount: "1000.00"
                    rank: 0
                  - collateral: >-
                      COutPoint(3798162c2b60906a9feff0efa38b57444f3749bebe397cba4edd495b929ed9b5,
                      0)
                    ip: 77.55.194.135
                    network: ipv4
                    added_height: 587653
                    confirmed_height: 587669
                    last_confirmed_height: 588184
                    last_paid_height: 587940
                    tier: CUMULUS
                    payment_address: t1QEA6PepP2wS3Lg6gZDiFzRB6PfxWLYeK5
                    pubkey: 042ebcb3a94fe66b9ded6e456871346d6984502bbadf14ed07644e0eb91f8cc0b1f07632c428e1e6793f372d9c303d680de80ae0499d51095676cabf68599e9591
                    activesince: "1588175897"
                    lastpaid: "1588210563"
                    amount: "1000.00"
                    rank: 1
                  - collateral: >-
                      COutPoint(a375169d97fcafac46f673045dfa0a78dd78e6bc6db181df18bf39dbe03926a4,
                      0)
                    ip: 96.52.90.87
                    network: ipv4
                    added_height: 572579
                    confirmed_height: 572581
                    last_confirmed_height: 588198
                    last_paid_height: 587986
                    tier: NIMMBUS
                    payment_address: t1a4J5u9rjrgVZLwRPSy7VPNoVVkeErNErk
                    pubkey: 04a8cf2dd605884e793068e91a6444c573d5f6253643cfb1a2575c94487434cfdba20f115bceb5a96d87ad85aa7099076ba4435d97a9cc8cde6330c649dec1fe4e
                    activesince: "1586358287"
                    lastpaid: "1588216950"
                    amount: "12500.00"
                    rank: 0
                  - collateral: >-
                      COutPoint(381d29a87b96e82253b3f9581618777469f854ae740b6a785c61867aa6f71e60,
                      0)
                    ip: 207.180.253.144
                    network: ipv4
                    added_height: 585797
                    confirmed_height: 585799
                    last_confirmed_height: 588206
                    last_paid_height: 587988
                    tier: NIMMBUS
                    payment_address: t1ZvKaPfgXJsY1DkYJ5gKwtjKFUkZcuQB2U
                    pubkey: 044a4faa023fccadfd4b59b888c7690e77f1f2dd613e6cab0b26a25ec152cf2adc16274aa970559d816cdca6730012b5f5a7067dac0fa918d69a44162ab4d4cacf
                    activesince: "1587952571"
                    lastpaid: "1588217098"
                    amount: "12500.00"
                    rank: 1
                  - collateral: >-
                      COutPoint(1a2c265b7d1d93941c4d551e61c90cc14482579835a4924e1e169339317bbef9,\
                      0)
                    ip: 47.22.47.186
                    added_height: 582736
                    confirmed_height: 582738
                    last_confirmed_height: 588198
                    last_paid_height: 588034
                    tier: STRATUS
                    payment_address: t1bNJrZ9JwWwvroT7YUJUSDfMQ2r21vZppe
                    pubkey: 041d289318b6e1cc32045d57f896f3c8c3fbbc336be077f3f492d42ab1c391326d843b8ee609feb859bb88d6524b8c25fe6eed958ef4b59f408e759f0458046a1d
                    activesince: "1587582537"
                    lastpaid: "1588222759"
                    amount: "40000.00"
                    rank: 0
  /daemon/viewdeterministicfluxnodelist:
    get:
      tags:
        - Daemon
      summary: Deterministic FluxNode list
      description: >-
        Same handler and answer as `GET /daemon/listfluxnodes` (fluxd
        `listfluxnodes`): the ranked FluxNode list, optionally filtered and
        limited. **Public**
      operationId: viewDeterministicFluxNodeList
      security: []
      parameters:
        - in: query
          name: filter
          schema:
            type: string
          description: >-
            Accepts both viewdeterministicfluxnodelist/filter and
            ?filter=193.188.15.238. Filter query will filter list by ,txhash,
            payment address, ip, or pubkey. If ommited, full list will be
            displayed.
          example: 193.188.15.238
        - in: query
          name: limit
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 9999999
          description: >-
            Return only the first `limit` entries of the ranked list. Applied
            only to a successful answer and only when the value is a whole
            number from 1 to 9999999 without a leading zero; any other value
            is ignored and the full list is returned.
          example: 100
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        collateral:
                          type: string
                          description: Collateral txid and output index
                        txhash:
                          type: string
                          description: Transaction id
                        outidx:
                          type: integer
                          description: Output index
                        ip:
                          type: string
                          description: Ip address of FluxNode server
                        network:
                          type: string
                          description: 'Network type (IPv4, IPv6, onion)'
                        added_height:
                          type: integer
                          description: Block height FluxNode was added to list
                        confirmed_height:
                          type: integer
                          description: Block height FluxNode was confirmed by the network
                        last_confirmed_height:
                          type: integer
                          description: Latest block height network confirmed the FluxNode
                        last_paid_height:
                          type: integer
                          description: Block the FluxNode was last paid
                        tier:
                          type: string
                          description: Tier of FluxNode
                        payment_address:
                          type: string
                          description: Address where rewards are paid
                        pubkey:
                          type: string
                          description: Fluxnode public key used for message broadcasting
                        activesince:
                          type: string
                          description: Active time of FluxNode in epoch
                        lastpaid:
                          type: string
                          description: Last paid time in epoch
                        amount:
                          type: string
                          description: Amount of collateral
                        rank:
                          type: integer
                          description: Rank of FluxNode
              example:
                status: success
                data:
                  - collateral: >-
                      COutPoint(436d3450affca4dd78a3755f816eb7d46f922dd430e0046b94f26ce88c008e79,
                      0)
                    txhash: >-
                      436d3450affca4dd78a3755f816eb7d46f922dd430e0046b94f26ce88c008e79
                    outidx: 0
                    ip: 77.55.210.97
                    network: ipv4
                    added_height: 562050
                    confirmed_height: 562053
                    last_confirmed_height: 588205
                    last_paid_height: 587939
                    tier: CUMULUS
                    payment_address: t1ZhnnTVUfgwKbmtFvmYtSb1xwPpSdJmzaY
                    pubkey: >-
                      043249d5fc0517976c8eeaaf96ce306c00687cea677be0181cdddaf8f8e044119f13258083fb0a8e98afdf57994331cd1e71958ce63b7b2d0a2dda0e095bd2a2de
                    activesince: "1585083381"
                    lastpaid: "1588210538"
                    amount: "1000.00"
                    rank: 0
                  - collateral: >-
                      COutPoint(62e0f589a36b9d009f060bcb062a9baf0a44ed3cb5fb4ba68fb5e8d1c6a76ed3,
                      0)
                    txhash: >-
                      62e0f589a36b9d009f060bcb062a9baf0a44ed3cb5fb4ba68fb5e8d1c6a76ed3
                    outidx: 0
                    ip: 207.180.238.133
                    network: ipv4
                    added_height: 587653
                    confirmed_height: 587669
                    last_confirmed_height: 588184
                    last_paid_height: 587940
                    tier: CUMULUS
                    payment_address: t1WWAUFtKyytFzuXpn3Rzc6fGFndzD6xWLK
                    pubkey: >-
                      0450331d67221677cdca27c7cce40c52d3f3aae1c71a3dbf0c7322a7739bb42855246a9ab3a0b4280f20a6ebb3bf4dcc2a2290b74e533560d9c64014d8937bd1bb
                    activesince: "1588175897"
                    lastpaid: "1588210563"
                    amount: "1000.00"
                    rank: 1
                  - collateral: >-
                      COutPoint(b81456f6cb28cab6bb7c715a26cb40dbe841e9d14bf47aadbf7a50fb8a32f7f4,
                      0)
                    txhash: >-
                      b81456f6cb28cab6bb7c715a26cb40dbe841e9d14bf47aadbf7a50fb8a32f7f4
                    outidx: 0
                    ip: 49.12.41.242
                    network: ipv4
                    added_height: 572579
                    confirmed_height: 572581
                    last_confirmed_height: 588198
                    last_paid_height: 587986
                    tier: NIMMBUS
                    payment_address: t1Wz3D8rTRB3xZi8WE8efgMzRwHhpg8dAWF
                    pubkey: >-
                      04e993a952569ecd6eb26eac7abdb699ca8e3f1debeaf544ef85b3c5838b74d7b30e196e917cb6e2008b2dcb9e42cafc4c93ccafb2888faea26b2e3a1a343f469a
                    activesince: "1586358287"
                    lastpaid: "1588216950"
                    amount: "12500.00"
                    rank: 0
                  - collateral: >-
                      COutPoint(db8d6440f834f773561025c7327620bb1770df185ec506323f084c436eb9fca7,
                      0)
                    txhash: >-
                      db8d6440f834f773561025c7327620bb1770df185ec506323f084c436eb9fca7
                    outidx: 0
                    ip: 62.171.183.202
                    network: ipv4
                    added_height: 585797
                    confirmed_height: 585799
                    last_confirmed_height: 588206
                    last_paid_height: 587988
                    tier: NIMMBUS
                    payment_address: t1bXEnPZ22LRtd8WCmmKZAF2gxqaAxWysTb
                    pubkey: >-
                      04bfdff6a29281e057f10c2162db0ba98f70133fc45ccfa3cd8440a1ddc0ae30172b81f73b098cfdfe5f413a361dc422a03a31066413850ba418f3f8a2df65a4e1
                    activesince: "1587952571"
                    lastpaid: "1588217098"
                    amount: "12500.00"
                    rank: 1
                  - collateral: >-
                      COutPoint(8dcdf431d67c54872dcbbbfe205df8d95bdf8d0c277f617ded10ff74d9242878,
                      0)
                    txhash: >-
                      8dcdf431d67c54872dcbbbfe205df8d95bdf8d0c277f617ded10ff74d9242878
                    outidx: 0
                    ip: 188.239.61.210
                    network: ipv4
                    added_height: 582736
                    confirmed_height: 582738
                    last_confirmed_height: 588198
                    last_paid_height: 588034
                    tier: STRATUS
                    payment_address: t1ZPnohxvacmT8VaJqRyZyMkvzERddQMttk
                    pubkey: >-
                      0418588b950297e955f7cc211c4d32f4f976433e8f1d4e2f2f0c4a1efd0e7a3b5167f27a0ad92ceedfa5b40862d929934a5d453f1268ee36b6ec22a7e921883454
                    activesince: "1587582537"
                    lastpaid: "1588222759"
                    amount: "40000.00"
                    rank: 0
  /daemon/getfluxnodecount:
    get:
      tags:
        - Daemon
      summary: Flux node count
      description: >-
        Returns a count of FluxNodes and enabled FluxNodes categorized by tiers.
        **Public**
      operationId: getFluxNodeCount
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      total:
                        type: number
                        description: Total number of Flux nodes
                      stable:
                        type: number
                        description: Number of stable Flux nodes
                      basic-enabled:
                        type: number
                        description: Basic Flux node count
                      super-enabled:
                        type: number
                        description: Super Flux node count
                      bamf-enabled:
                        type: number
                        description: Bamf Flux node count
                      ipv4:
                        type: number
                        description: Flux nodes on ipv4
                      ipv6:
                        type: number
                        description: Flux nodes on ipv6
                      onion:
                        type: string
                        description: Flux nodes on tor
              example:
                status: success
                data:
                  total: 692
                  stable: 692
                  basic-enabled: 293
                  super-enabled: 231
                  bamf-enabled: 174
                  ipv4: 692
                  ipv6: 0
                  onion: 0
  /daemon/getdoslist:
    get:
      tags:
        - Daemon
      summary: FluxNode DOS list
      description: Get a list of all fluxnodes in the DOS list. **Public**
      operationId: getDOSList
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        collateral:
                          type: string
                          description: Collateral transaction hash
                        added_height:
                          type: integer
                          description: >-
                            Height the fluxnode start transaction was added to
                            the chain
                        payment_address:
                          type: string
                          description: The payment address associated with the fluxnode
                        eligible_in:
                          type: integer
                          description: >-
                            The amount of blocks before the fluxnode is eligible
                            to be started again
                        amount:
                          type: string
                          description: The amount of collateral associated with the fluxnode
              example:
                status: success
                data:
                  - collateral: >-
                      COutPoint(44bb3ad5ca975ff57f8b2488786bfb72115ee648e1a06d77aa5fd6bfc388cbba,
                      0)
                    added_height: 644302
                    payment_address: t1LJAkTUAHcJZ535mqJmFwHtMTrEaQBSNf1
                    eligible_in: 35
                    amount: "1000.00"
  /daemon/getstartlist:
    get:
      tags:
        - Daemon
      summary: FluxNode start list
      description: Get a list of all Fluxnodes in the start list. **Public**
      operationId: getStartList
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        collateral:
                          type: string
                          description: Collateral transaction hash
                        added_height:
                          type: integer
                          description: >-
                            Height the fluxnode start transaction was added to
                            the chain
                        payment_address:
                          type: string
                          description: The payment address associated with the fluxnode
                        expires_in:
                          type: integer
                          description: >-
                            The amount of blocks before the start transaction
                            expires, unless a confirmation transaction is added
                            to a block
                        amount:
                          type: string
                          description: The amount of collateral associated with the fluxnode
              example:
                status: success
                data:
                  - collateral: >-
                      COutPoint(631eba8bc39c2e6165607e385ad55aa0b3d69991624c3e7292aa2f2e3d4e86e0,
                      0)
                    added_height: 684078
                    payment_address: t1TosdpcFNWAaJ8kNmc1LNWbVKh6ob4Tvri
                    eligible_in: 9
                    amount: "1000.00"
  /daemon/fluxnodecurrentwinner:
    get:
      tags:
        - Daemon
      summary: Current list of winners
      description: Gets a list of current FluxNode winners. **Public**
      operationId: FluxNodeCurrentWinner
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      CUMULUS Winner:
                        type: object
                        properties:
                          collateral:
                            type: string
                            description: Collateral txid and output index of FluxNode
                          ip:
                            type: string
                            description: Ip address of FluxNode
                          added_height:
                            type: integer
                            description: Block height FluxNode was added
                          confirmed_height:
                            type: integer
                            description: Block height FluxNode was confirmed
                          last_confirmed_height:
                            type: integer
                            description: Block height FluxNode was last confirmed
                          last_paid_height:
                            type: integer
                            description: Block height FluxNode was last paid
                          tier:
                            type: string
                            description: FluxNode tier
                          payment_address:
                            type: string
                            description: Payment address
                      NIMMBUS Winner:
                        type: object
                        properties:
                          collateral:
                            type: string
                            description: Collateral txid and output index of FluxNode
                          ip:
                            type: string
                            description: Ip address of FluxNode
                          added_height:
                            type: integer
                            description: Block height FluxNode was added
                          confirmed_height:
                            type: integer
                            description: Block height FluxNode was confirmed
                          last_confirmed_height:
                            type: integer
                            description: Block height FluxNode was last confirmed
                          last_paid_height:
                            type: integer
                            description: Block height FluxNode was last paid
                          tier:
                            type: string
                            description: FluxNode tier
                          payment_address:
                            type: string
                            description: Payment address
                      STRATUS Winner:
                        type: object
                        properties:
                          collateral:
                            type: string
                            description: Collateral txid and output index of FluxNode
                          ip:
                            type: string
                            description: Ip address of FluxNode
                          added_height:
                            type: integer
                            description: Block height FluxNode was added
                          confirmed_height:
                            type: integer
                            description: Block height FluxNode was confirmed
                          last_confirmed_height:
                            type: integer
                            description: Block height FluxNode was last confirmed
                          last_paid_height:
                            type: integer
                            description: Block height FluxNode was last paid
                          tier:
                            type: string
                            description: FluxNode tier
                          payment_address:
                            type: string
                            description: Payment address
              example:
                status: success
                data:
                  CUMULUS Winner:
                    collateral: >-
                      COutPoint(5e6fdf0a56de71c3fcaf4091097d8feea7b3e1f966e334b7ea234a616813f934,
                      0)
                    ip: 66.119.15.218
                    added_height: 589025
                    confirmed_height: 589026
                    last_confirmed_height: 590742
                    last_paid_height: 590489
                    tier: CUMULUS
                    payment_address: t1VLEe6iBNGGicyiqQNzGWsZ6Z6pNZZrTyq
                  NIMMBUS Winner:
                    collateral: >-
                      COutPoint(4da9b0320ab1a1e94662471732b722667cd68a25d5db72f18572e36f63452872,
                      0)
                    ip: 85.23.158.111
                    added_height: 585221
                    confirmed_height: 585222
                    last_confirmed_height: 590742
                    last_paid_height: 590538
                    tier: NIMMBUS
                    payment_address: t1WdrzqRR4gh73mPJpN3PDB9a9ZFiatP9tp
                  STRATUS Winner:
                    collateral: >-
                      COutPoint(7f69bbb001f27177d2b60b99e3dbe3d95b82b69b8d82a21b9829ddc27af2be01,
                      0)
                    ip: 193.188.15.153
                    added_height: 587646
                    confirmed_height: 587649
                    last_confirmed_height: 590742
                    last_paid_height: 590594
                    tier: STRATUS
                    payment_address: t1dDaoT2WDv5M5gTdx7CzLgXEQSEeqVkryw
  /daemon/getbestblockhash:
    get:
      tags:
        - Daemon
      summary: Block hash of tip on longest chain
      description: >-
        Returns the hash of the best (tip) block in the longest block chain.
        **Public**
      operationId: getBestBlockHash
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Block hash
              example:
                status: success
                data: >-
                  00000045ee2d11311976f420b0d753dc7a6e2800a36cf07f6ec1572699737ab6
  /daemon/getblock:
    get:
      tags:
        - Daemon
      summary: Get block data
      description: >-
        Gets block data using block height or block hash you specify to get info
        for with verbosity option. **Public**
      operationId: getBlock
      security: []
      parameters:
        - in: query
          name: hashheight
          required: true
          schema:
            type: string
          description: Block hash or block height
          example: '588530'
        - in: query
          name: verbosity
          schema:
            type: integer
            enum:
              - 0
              - 1
              - 2
            default: 2
          description: >-
            If verbosity is 0, returns a string that is serialized, hex-encoded
            data for the block. If verbosity is 1, returns an Object with
            information about the block. If verbosity is 2, returns an Object
            with information about the block and information about each
            transaction. FluxOS uses 2 when the parameter is omitted. The
            response example shown is for verbosity 1.
          example: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      hash:
                        type: string
                        description: The block hash
                      confirmations:
                        type: string
                        description: The number of confirmations or -1 if on wrong chain
                      size:
                        type: integer
                        description: The block size
                      height:
                        type: integer
                        description: The block height or index
                      version:
                        type: integer
                        description: The block version
                      merkleroot:
                        type: string
                        description: The merkle root
                      finalsaplingroot:
                        type: string
                        description: >-
                          The root of the Sapling commitment tree after applying
                          this block
                      tx:
                        type: array
                        items:
                          type: string
                          description: The transaction id's
                      time:
                        type: integer
                        description: The block time in seconds since epoch (Jan 1 1970 GMT)
                      nonce:
                        type: string
                        description: The nonce
                      solution:
                        type: string
                        description: The solution
                      bits:
                        type: string
                        description: The bits
                      difficulty:
                        type: number
                        description: The difficulty
                      chainwork:
                        type: string
                        description: The chainwork
                      anchor:
                        type: string
                        description: Merkle root of note commitment tree
                      valuePools:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: 'Protocol name of pool(sprout,sapling)'
                            monitored:
                              type: boolean
                              description: Status of pool monitor
                            chainValue:
                              type: number
                              description: Pool value of FLUX
                            chainValueZat:
                              type: integer
                              description: Pool value of FLUX
                            valueDelta:
                              type: integer
                              description: Delta value
                            valueDeltaZat:
                              type: integer
                              description: Delta value
                      previousblockhash:
                        type: string
                        description: The hash of the previous block
                      nextblockhash:
                        type: string
                        description: The hash of the next block
              example:
                status: success
                data:
                  hash: >-
                    0000008ac60c223e8f7d7ea458264ec308135bde7515ee1440a824ea76610b2d
                  confirmations: 3
                  size: 1891
                  height: 588530
                  version: 4
                  merkleroot: >-
                    28f7e9d0c29bf5fa404b28e1e6c2228d7e8f9a672d24dc9c9882dabd8fd47714
                  finalsaplingroot: >-
                    5144b7dcffa9a72d774e376baa38001d0f1dd760e435902b7af2f72461532c6d
                  tx:
                    - >-
                      1ed830027683e98c5670981ee983860485fce5132f30d9b6e8e248789c52c55d
                    - >-
                      4e90720727aa79d29870447c1f15f9bd40058b7096eb66d4b9de8c6e945975bb
                  time: 1588282383
                  nonce: >-
                    0229f5cc00000000000000000000000000000000000000000000000040060000
                  solution: >-
                    1b01d5b42dce5c5fea7f4a591c812d36ac938bcaf035bed4dc6328b8de555c4b0a5b3657d0ae1d5807e828b5e5e5a6dd057d0493
                  bits: 1e00c837
                  difficulty: 2618.622027119306
                  chainwork: >-
                    000000000000000000000000000000000000000000000000000029a0d2a05a8e
                  anchor: >-
                    e9585c5a63103a1dffea87286f28b0c649a9b481aa150ef4bb309a7e9d76b34e
                  valuePools:
                    - id: sprout
                      monitored: true
                      chainValue: 266554.25222433
                      chainValueZat: 26655425222433
                      valueDelta: 0
                      valueDeltaZat: 0
                    - id: sapling
                      monitored: true
                      chainValue: 2018046.78899491
                      chainValueZat: 201804678899491
                      valueDelta: -0.01711468
                      valueDeltaZat: -1711468
                  previousblockhash: >-
                    00000057e8ef2fc394594f1f37d6f5ef7cc2ab4f2af3b6b3eaa14adb9310950b
                  nextblockhash: >-
                    000000196832b58171a331e684f5c3df019632749a3219bfb57569d0f7601a30
  /daemon/getblockchaininfo:
    get:
      tags:
        - Daemon
      summary: Blockchain info
      description: >-
        Returns an object containing various state info regarding block chain
        processing. Note that when the chain tip is at the last block before a
        network upgrade activation, consensus.chaintip != consensus.nextblock.
        **Public**
      operationId: getBlockchainInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      chain:
                        type: string
                        description: >-
                          Current network name as defined in BIP70 (main, test,
                          regtest)
                      blocks:
                        type: integer
                        description: The current number of blocks processed in the server
                      headers:
                        type: integer
                        description: The current number of headers we have validated
                      bestblockhash:
                        type: string
                        description: The hash of the currently best block
                      difficulty:
                        type: number
                        description: The current difficulty
                      verificationprogress:
                        type: number
                        description: Estimate of verification progress
                      chainwork:
                        type: string
                        description: 'Total amount of work in active chain, in hexadecimal'
                      pruned:
                        type: boolean
                        description: True if chain has been pruned
                      size_on_disk:
                        type: integer
                        description: The estimated size of the block and undo files on disk
                      commitments:
                        type: integer
                        description: Number of commitments
                      valuePools:
                        type: array
                        items:
                          properties:
                            id:
                              type: string
                              description: Name of pool
                            monitored:
                              type: boolean
                              description: Monitor status
                            chainValue:
                              type: number
                              description: Value of FLUX
                            chainValueZat:
                              type: integer
                              description: Value of FLUX
                      softforks:
                        type: array
                        items:
                          properties:
                            id:
                              type: string
                              description: Name of softfork
                            version:
                              type: integer
                              description: Block version
                            enforce:
                              type: object
                              properties:
                                status:
                                  type: boolean
                                  description: True if threshold reached
                                found:
                                  type: integer
                                  description: Number of blocks with the new version found
                                required:
                                  type: integer
                                  description: Number of blocks required to trigger
                                window:
                                  type: integer
                                  description: >-
                                    Maximum size of examined window of recent
                                    blocks
                            reject:
                              type: object
                              properties:
                                status:
                                  type: boolean
                                  description: True if threshold reached
                                found:
                                  type: integer
                                  description: Number of blocks with the new version found
                                required:
                                  type: integer
                                  description: Number of blocks required to trigger
                                window:
                                  type: integer
                                  description: >-
                                    Maximum size of examined window of recent
                                    blocks
                      upgrades:
                        type: object
                        properties:
                          76b809bb:
                            type: object
                            properties:
                              name:
                                type: string
                                description: Name of upgrade
                              activationheight:
                                type: integer
                                description: Activation block height
                              status:
                                type: string
                                description: Status of upgrade
                              info:
                                type: string
                                description: Additional info of upgrade
                      consensus:
                        type: object
                        properties:
                          chaintip:
                            type: string
                            description: Branch ID used to validate the current chain tip
                          nextblock:
                            type: string
                            description: >-
                              Branch ID that the next block will be validated
                              under
              example:
                status: success
                data:
                  chain: main
                  blocks: 590788
                  headers: 590788
                  bestblockhash: >-
                    0000007c586f90cbba2ba9b8708bd9e7982ad1e7feb61a196312e1cc9510972f
                  difficulty: 2864.222620571916
                  verificationprogress: 0.9999987778641473
                  chainwork: >-
                    000000000000000000000000000000000000000000000000000029ac8cd1cf8c
                  pruned: false
                  size_on_disk: 3398677218
                  commitments: 809048
                  valuePools:
                    - id: sprout
                      monitored: true
                      chainValue: 266554.25222433
                      chainValueZat: 26655425222433
                    - id: sapling
                      monitored: true
                      chainValue: 2020907.82312995
                      chainValueZat: 202090782312995
                  softforks:
                    - id: bip34
                      version: 2
                      enforce:
                        status: true
                        found: 4000
                        required: 750
                        window: 4000
                      reject:
                        status: true
                        found: 4000
                        required: 950
                        window: 4000
                    - id: bip66
                      version: 3
                      enforce:
                        status: true
                        found: 4000
                        required: 750
                        window: 4000
                      reject:
                        status: true
                        found: 4000
                        required: 950
                        window: 4000
                    - id: bip65
                      version: 4
                      enforce:
                        status: true
                        found: 4000
                        required: 750
                        window: 4000
                      reject:
                        status: true
                        found: 4000
                        required: 950
                        window: 4000
                  upgrades:
                    76b809bb:
                      name: Halving
                      activationheight: 1076532
                      status: active
                      info: 'Flux Halving'
                  consensus:
                    chaintip: 76b809bb
                    nextblock: 76b809bb
  /daemon/getblockcount:
    get:
      tags:
        - Daemon
      summary: Current block count
      description: Returns the number of blocks in the best valid block chain, i.e. the current block height. **Public**
      operationId: getBlockCount
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: integer
                    description: Block count
              example:
                status: success
                data: 1410823
  /daemon/getblockdeltas:
    get:
      tags:
        - Daemon
      summary: Get block deltas data
      description: Returns data of block deltas. **Public**
      operationId: getblockdeltas
      security: []
      parameters:
        - in: query
          name: hash
          required: true
          schema:
            type: string
          description: Block hash
          example: 000000234b617194f3faff69ee62f0dde0115f2007c3b42e38eaba80c786a5e5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    description: Block deltas information
              example:
                status: success
                data:
                  hash: 000000234b617194f3faff69ee62f0dde0115f2007c3b42e38eaba80c786a5e5
                  confirmations: 861038
                  size: 23461
                  height: 590823
                  version: 4
                  merkleroot: 61d6664cb4e3575d4362f922316712fe647555c313ab6c4625bb368a93b40cf6
                  deltas:
                    - txid: b8b7693c667f9bbfbd813894750ac9253d8adf55337dacea90d3a4c4082e0651
                      index: 0
                      inputs: []
                      outputs:
                        - address: t1fMvBXaLzC9i6YKYnD3VCUZN2oifSsCZkx
                          satoshis: 11100011000
                          index: 0
                        - address: t1PCxVydF7W4qqsJtNZmY4mGjifTDZLS5Pn
                          satoshis: 562500000
                          index: 1
                        - address: t1frSzhh5TiWpfdZHcmr1ZVe2Eq29CWjbjN
                          satoshis: 937500000
                          index: 2
                        - address: t1LaCpfmHx15cdpnhMh3tFHrey9eJyzfy9J
                          satoshis: 2250000000
                          index: 3
                        - address: t1bdh6sfstXmVhZJrvtD2eSw4GBLKNw1qj8
                          satoshis: 150000000
                          index: 4
                    - txid: b82351bf0f579a3300878f6b11ba5a81b228c3605d66e7a0c57ccba4a1d4f117
                      index: 1
                      inputs:
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 0
                          prevtxid: 68329b05ef6a0ecac53f8dc172eea3c90be95654b344f04285b54a48b34f5900
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 1
                          prevtxid: 74b3e32fa7fd17ab6f37385293d78e031763106653036524993136069bb43905
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 2
                          prevtxid: 6190156195143119297cc2117d93cee1bcb40c66885db98151aa9159bec32307
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 3
                          prevtxid: 264f0b84b3f368c8199587c9017dfe4a4912a4a96f687e9e35a19fb6023c2a07
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 4
                          prevtxid: 04bf8b553c4897b48785ad76ceef8c6f6b1f5eaff6a50211df04fa5637266507
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 5
                          prevtxid: dc23490d91a6d21819e4c4aa3eb4787bd506cbd1eb3fdce9f49cc2b1e25f1d09
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 6
                          prevtxid: 32349482da76f33a07dcf77f05214eda28864b0bb7fc3243ae66b08c95278d0a
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 7
                          prevtxid: 9811de062b884d2902dd9c3cfb1c2ccc3ae46131f23cd52fb2ffaf321c9ea30a
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 8
                          prevtxid: 917632c0a7c4f9b7131401cb6c1882063365f467ea972225e0090795d90c370e
                          prevout: 1
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 9
                          prevtxid: c53705604881fe73da298c405ce41f74de31f17f4e98b78af8cc0f7ca69b4c10
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 10
                          prevtxid: 203a0ce6c83503b9c359aeccdbc48e109b25f03dcd6983acaefaafb422341712
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 11
                          prevtxid: c3e4c3bb33f1c697a864af7f8ecb74d1a316bee0ccc39c8cf46c9ae561ad7c13
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 12
                          prevtxid: b75b442636e5c5ee71edb7fd060b81d444d188e51fc04641a2e439c21784df14
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 13
                          prevtxid: cea8e7955a4772f07a8c56e5cb6dd39547dbbf7a9fbcbaab5e6a6ada4ec08f16
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 14
                          prevtxid: 00551ad93ffe901250457e0a63729c1167771b23c6ab978b97fa0e27674c3a19
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 15
                          prevtxid: ffe23d6383224f48dd5aa8c984e71abf8c70034c667255beb45eab5d2ea00823
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 16
                          prevtxid: dd48d754664a5bece0d1b95df84ba5fe1f0057339b21a1d85f9f4d439715c524
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 17
                          prevtxid: 1609739b6231751f71225434026926b267b794100eb4da8c8bb0988398006d26
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 18
                          prevtxid: bc8be8a4d023fe4751ab9db92f29cc6551fb72730ca703f028a2b5f1e38d0b29
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 19
                          prevtxid: dfed73ecad925061d775f3ad4cefb5b1cc709d263efc4f519363b2055d3a462a
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 20
                          prevtxid: dbc34e6af3cf12743bb74b1f4e0a2f11b9f84b844a80b0867aa293f3c6de762a
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 21
                          prevtxid: fcf21266ddc20cf693fe88154eedaf52c3b8a96560f6d43dae8d0a39f2fd632d
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 22
                          prevtxid: 731320bac92bd36679a217b45afe7677eb546ca79c4b91d8fdc0149e1690542f
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 23
                          prevtxid: 7acfd073c3cefddb2221aa6870af0a0628d097a05bdcc10fecb03ec992ee6930
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 24
                          prevtxid: b97bb189a8caf5646df5f96ab97cb69af759ff2a4b36fd4406d67e895aa88831
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 25
                          prevtxid: 463e2d4103784a7a97f58e6f758e588abeeb01a96bba0a4cbde0cc64f02d2332
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 26
                          prevtxid: a635c16672fd90080ade2c8c6c94f4aa83933bb94ce7c915883957064f5db132
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 27
                          prevtxid: 909f0686d3f8c0efc9660bc829618aa46a47c1829a2d9787e8b9cb1ed0324633
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 28
                          prevtxid: f29019e76826227983374183ec8d8f2361c420fef5e753cb4314e2c16a5ab734
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 29
                          prevtxid: 5c019c098309a323822dbcf79804d3c4ab27761b1b73af0092f69c81e86ec234
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 30
                          prevtxid: fe5992dc1d6c3d4181faa16efc3004a3d81a9d9817da83b0288429607111a73b
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 31
                          prevtxid: 1ad63237e5b707260830372b68f4cdfba9b3377a85cabbef33e92907e2d7cf3e
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 32
                          prevtxid: 308ce26fed61cbc0e90c5f8967b897dee21fddfc5f13ba62d69833ee9e0d1a40
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 33
                          prevtxid: f1458b6d5595e8bdadd66e9c90c1dc0c14e97b2f5fd1bcf4f5b91370d0e6e442
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 34
                          prevtxid: a6673a84de23dcf6fa49afa989cadedac86db887479d6e9ca1ff0ef8f4c5e243
                          prevout: 1
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 35
                          prevtxid: f3c505a7ca00bf36bdd146877a08a1b2362203029eefab351f789d71c1fb5947
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 36
                          prevtxid: 2a7405dc72421211dc343edb8b32bbff3f81ec558ea9165d40c2ef43a47c7b4c
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 37
                          prevtxid: 15f1b54b25a8dc541622f66ac523dfe5b57803899ab9b57be86dcb7906e2c14d
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 38
                          prevtxid: 6b2af13923f8d4a43563ec87f5f3064dec56b31c4f59832c29ecc9351f1a574e
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 39
                          prevtxid: 94736fcc556cfd74a7b1d239740d170c07a42eee5de4425e61de341fca62ee4e
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 40
                          prevtxid: ef41b9360978da2d72e692bb593564f8fb428639a9c77a95736294ea220a374f
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 41
                          prevtxid: 973e8b215140ce4d1c89e69fcc8a303698654641db3f7b9e92ced4d9c66ee054
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 42
                          prevtxid: 010a2ddaa60607cd82f2e92e7471c18cb1c8ee2bf2ce520ca0c6204ca7ae7c59
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 43
                          prevtxid: c7d670324f9f2fa7bfc49cb3f24f785dd73940a2545aa90b0b9a98bb78a33e5c
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 44
                          prevtxid: 4cbf610288e3c7b773e7ee5852337ec1bea0b66d21447303f575bfd11bfc765c
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 45
                          prevtxid: 205ae014f1becd352e82ad05ca014aa0de2252635aa0338e52c0cf9176e13160
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 46
                          prevtxid: 519cccafd7105e90b6b3f1cbb8d7a01c321203914b6afae4484f3fd7ddc53b60
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 47
                          prevtxid: 5c5a4bbfced49a6a6946203497db3cecce025743b8f6a4252436787b3242f965
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 48
                          prevtxid: 8ceba4d4aace6ad6ec0d69c72a117314df3d22b41c69c0c4de2680e916bd3866
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 49
                          prevtxid: 5229c9f33de85ec37ab7fc0605f2db7afaa173036948e12b9e023c20aae6256f
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 50
                          prevtxid: f3a973eb99c26de436a81d2ff4714b6614067b1290d97675b38edca47b91e571
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 51
                          prevtxid: 3fef77a58335857350ac5aa9ac12f77e11300d3ef1b281bd36f0d90f67ba5b72
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 52
                          prevtxid: 8cf05e22b8432f96d170c575d2d0d4d980678085e2cf6b6019856e00baadf572
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 53
                          prevtxid: 0c7cd11d614d05f5eff48d9fcc24726a8be833fa8a7b9c53012628c15188d473
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 54
                          prevtxid: 5f7eba6b3de93273c29e224d07abd324f2db37b33b046225fd39b6748b019674
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 55
                          prevtxid: eb316ed163c9a36b87223ffe2cf3ce817573b1fcaf99468428c8bd43c01cb779
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 56
                          prevtxid: c1df516de5ea35d75e53d597d142d56c7c0e0fbde2ad6bbf5f58402642d4477a
                          prevout: 1
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 57
                          prevtxid: 8cf5018925f2d37e537dae83849b78198085117545b7d626de7354f71e1ec17a
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 58
                          prevtxid: 381e53986aff4aba609f3dcfa0b32a9fdbac4f8b635afb4fa5d22968ce3ac97d
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 59
                          prevtxid: dcce0155aa0ae56a98bbc090c9f94e978eaff0bfcb5955d8a221e160c96dfb7e
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 60
                          prevtxid: 69e2beda071dc3d035e29a8c64dc30c8d0d6f1d57b0794714481ce73914c5d80
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 61
                          prevtxid: bfcd1c75f2c606d8e4174055228ff35a7d245bf1c3a99ccf1977f6ecaa231782
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 62
                          prevtxid: d381d1f0caf6e7773b85604628d5774d1221e876565506b7742a0f1a6c88c582
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 63
                          prevtxid: a5a86f133ac49336227bdf7d29d4da4f91f2c504a05d2b1020988cbc81d55886
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 64
                          prevtxid: 25807684599c04ffa13aa59df1e00a31961be66e76cceee39e3d568b53401c88
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 65
                          prevtxid: 9d17a29800556375e8db0c11c090ced3153a4e53ab8101f8db0f0c0287f4e088
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 66
                          prevtxid: be37bf9a9ac4569aa83e722d9d29e4b13b86c9b8e1c184b33a5482a932bbc78b
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 67
                          prevtxid: c1ac1125ac90a221f988e93c880fc1c1a4ef271adbd5e914d356577a72591d8c
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 68
                          prevtxid: a3851e2819566da37e3ffd4e6adc47634985660394ac6bc7e13c0edb8e56388c
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 69
                          prevtxid: 8ac14569bb75c4008bf3478a7a0ec1b387b578eca52ab70e4a5b5039a0d0348e
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 70
                          prevtxid: 165201561d1d52d12d785d3a09333ae7ea859baff55185d15f8ade8e0955728f
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 71
                          prevtxid: e665bd27510d9240f674ad7d6a6e9422e5534d3ad4079623ae938da523a98a8f
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 72
                          prevtxid: 9663f7871d2ba5c50862a505b87dc66583880737975700e72d33a4a9711ffb8f
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 73
                          prevtxid: 0ea3d0d861d52555caa20d87472b6da32827ad8f40474277127f21a49aaf9490
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 74
                          prevtxid: 3f710f0a6f3b8fa6707a458accc7526ed1fc03762acebd7965d9290b4d143291
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 75
                          prevtxid: 4271c24a96962ecfe71ae5163be82e33ef57fe6bab113a2fafe2e2a7015b4c92
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 76
                          prevtxid: de5d4a8a947787f47cf27a26797573dc899cdc7634e8f102616b452beca8e892
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 77
                          prevtxid: 611dd75d1f2a81569f21028283ff1b3dd865376cafff30ccde56375f2264b793
                          prevout: 1
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 78
                          prevtxid: 1b36777dffd7e1afefa0a03b4879cfabc8e3f3cab7c27f8ed87af816d7e92194
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 79
                          prevtxid: 851b66d51e32d29aa44f4df4ac7ba8b241e8889bed28ba68e1637ebc2585c194
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 80
                          prevtxid: 7b660c6b87247052652abb5b2b7810c4119a9b559824cec3d405a2fbba2fe99c
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 81
                          prevtxid: e06d870352e059b478f374b794d1a8f5930c4d589a4983d2efc5e78ac7fcff9c
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 82
                          prevtxid: 3a182659a8efb0e86dd9e60e4fa3395fa337248c7ee4301553784595d1b3999d
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 83
                          prevtxid: 3960ab90c369d6fb45d90f2763235b0f0cfc953ce2ecd77c888f4ef05c5daf9d
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 84
                          prevtxid: e85184cdc43723094c1b23ad3c595a161bd8cab981762786462e664ea3679da8
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 85
                          prevtxid: e3aca715d67454c8410c5659fb1966a8f14530a37f406331168d7f581194caad
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 86
                          prevtxid: 08733cb51854888e901b13bb0941ebc56a2ee7c1ed259e45c8e54c203f99e8af
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 87
                          prevtxid: b95a719fdf71d1d1f47c823d9a669344f6a7c117032e60350519279cf457fdaf
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 88
                          prevtxid: 52db6f174b5a424acd042c7efdcaee1d5608119855d69b567c0772d67bc029b0
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 89
                          prevtxid: 00bc38bcfb09fb26c632a2e3105845d8a2053bf22120c4e517f08d3d5b4c85b5
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 90
                          prevtxid: 589307060fd9bae994b110b20c6b5f5bb11ad52bb09f0e149482ec907a31d8b5
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 91
                          prevtxid: 2571bd66474a396f66549fcee9cd9a578bc3217632e13bd76336d43a9fa826b7
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 92
                          prevtxid: ba1985dce84aa7c605a2c6459ce9286744c789606ef1cb8c41e4c475dc5b99b8
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 93
                          prevtxid: 6cac2506d5133ed78d668310ed725ba02187e8f55d864308794ff42e934df3ba
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 94
                          prevtxid: cc9b71b5455d9d0bfbfc4d1209f8f9346d93847fed46da6ac458c086e01478c1
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 95
                          prevtxid: f9795fbcd30a9cc6a40a007af64b03177d3a492ef7639182eaa3ad3871807ac1
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 96
                          prevtxid: 2228cef5eba9c574792de18a52b1bd6de6b7d34bf67a414b8153578e43f528c3
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 97
                          prevtxid: 1ba3d7308440d5af1c3ab6f70a2eaf3745cbf48275856537d49a78c5e32023c4
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 98
                          prevtxid: 8b5f789e8c2eb9cb3320f7550011552bee865b6a64bd374b55b2774ef5e765c4
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 99
                          prevtxid: a1cff603c80695f27370062ab55be5f2b7579faa44f38504531a3eb37b9e15c5
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 100
                          prevtxid: a11db96ce2c072b5f8c7711a075cb485a2dbdfa98f0a3db1e96b90e6d5538ec6
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 101
                          prevtxid: d031ab964b86f78a2a022a0299bc4dd90a49cdbf3d7b2cb4c0dd56f55b465cc7
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 102
                          prevtxid: 94cde88ab4946cacc4afcd36629c42fc486fdb5730aa67b26cfff2014de4fdc7
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 103
                          prevtxid: e12f88a5cca277d986d8315e4fb2e5b2b0eaf54beb317660c3a667cad992cac9
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 104
                          prevtxid: 7759fba3edfa77d799cf6731820d76cb5a73724f778fa4910d77649a52fb69ca
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 105
                          prevtxid: 0402647402f39d89d90c00b3202afe5cbcb69acebb4a677a193336ebc48dd6cf
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 106
                          prevtxid: 0ec2e08d1e7b043361180382caa6e820740cd50d89f415f0ef9bf6d18b357cd0
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 107
                          prevtxid: 9d781390ccdc9c6b1031cb000f220ecb0f0e571ea357062ae1ac99c3049a7ed0
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 108
                          prevtxid: c2f16ae9bda641aac36ff103015dd115be30c7b20020dcf286f3758a16f1aed0
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 109
                          prevtxid: 3c6642139a2fb7f563c90ce978424322701a19ea152b9fdca80ba3556752e0d0
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 110
                          prevtxid: aa17f9e86859078c54049109626a1fb595e032006fac0d45f8f721980004f7d4
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 111
                          prevtxid: df7a375f69dbd416e83c96b8ed392fb941cdbc5f6948350fd85d56a4899b48d9
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 112
                          prevtxid: 997b5044382ebfd34e6984308da297880e7a1611c48591d0c116f9dcb6c9f6dc
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 113
                          prevtxid: b83de450f63f4f9a21ee38c8553fb599ca177c1c414ce654460f19ba44ce1ade
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 114
                          prevtxid: 65a45dee417addd493e66a055267d6026aaa53798525afd0c06f7b59044c5fdf
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 115
                          prevtxid: e76c6885d9d3e2adf5c9630c4ec6a358204da2edb3c1b3c289bd5d3a459612e0
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 116
                          prevtxid: 2fdcb71679b9ac4b7961b24c2ee1c5ac853319481fe6e7d126f10f3d75c61ce0
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 117
                          prevtxid: 72505e5c7b467c064520df692d76dbafffa20a865549d10db758d38d61d590e0
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 118
                          prevtxid: ee669de4d85e550e345324174b2721770b7e482cb30de0149dad6c1b2acf7ee1
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 119
                          prevtxid: d62ee3ec7041c36ddf315e5db15ad8f062780f1ec5f0327cc982c713febb0be2
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 120
                          prevtxid: ef799b7dddd324b927e09c0842927694299dda438342c2effd3834c0b3b4f3e2
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 121
                          prevtxid: b55749d5afc1c13cd8638ec50a1dc88ce6f5e58b77cbfbf3645e165d06a5ffe4
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 122
                          prevtxid: cff19794e000ed502fd2e7bbfe9f6fc985612f49baf6728d2ff9e793eb2087e5
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 123
                          prevtxid: 32344a74f124f15dfd2004d79366a2afe3846616af4c2e1f358ba8dc005c8be7
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 124
                          prevtxid: 0a321fedb3a0d4ae26e2481bf50fe5091ab727a4095d834ccda5e9b6149f9be7
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 125
                          prevtxid: f5aeb28b5ae6fb1a6190ed4d936594dce6fa3182d777aec2607da4ead53bb0e7
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 126
                          prevtxid: 25d02aecd4ed9d10af14ae2c536f18e493c53d293cee3b38e2d217298d6084eb
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 127
                          prevtxid: 7a96b4bdad80cefbfb7ef23036c92aa5d233379678ca27a4e347718c931e02ec
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 128
                          prevtxid: ed7e97e1d29f224442a296f51a5081bef017a08736c172e9d611bf50cdf721ee
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 129
                          prevtxid: 7c60317c79beeef35f504ccf76b9fc6927aec3212f954008beb04e69e5dfcbf2
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 130
                          prevtxid: d32d63cd19ea296d6a1a00537a23dd478d907b8d03a6282d8bd180f6bd86dff4
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 131
                          prevtxid: 6b9b9a3ac6c923690c31a2bc4b67ec2f87a7b78e8278fc38d64e09b00c353ff7
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 132
                          prevtxid: d7e025178a5b347dd763682251cd7a5b05ecdf8f151239fb7e952e47a44adcf7
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 133
                          prevtxid: 5382b29982274c449490bce310b4e116f8d9860a944127527d47a6c45d683af8
                          prevout: 1
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 134
                          prevtxid: 51148c9dbb87107a94caadd3456e77e3361cf6aa609e3cc8b5636804d442c6f8
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 135
                          prevtxid: e94654e1054029bc53c9b02d61d9cc0a79ef8c113e7c38f317cd29b308863ef9
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 136
                          prevtxid: ac1adb65f3a9c468a21ed89e549108022e08104be1cd01e6d0b4fd986b5198fb
                          prevout: 2
                        - address: t1Pebir9xZYvNAvvkxXtN1sCBTBQndC4W2X
                          satoshis: -937500000
                          index: 137
                          prevtxid: 134691b265aebb495325338dd3ff4f82543907fe779cbb327ec3d08228289efc
                          prevout: 2
                        - address: t1MUY12dtkH2gq7ed35QTtFJdNa7Jo6NjU8
                          satoshis: -937500000
                          index: 138
                          prevtxid: dead2bbe148516b73fe780c35a762496d7ed321bafbe989fed35813b2b91affc
                          prevout: 2
                      outputs: []
                    - txid: f62116d4ea25d0785ffcdd84fb0a207955455a4c5a875b2e0601c1021dc17fcc
                      index: 2
                      inputs: []
                      outputs:
                        - address: t1KMNXV72S1HNfUHCUXVTQG5FmHtqtfcZV7
                          satoshis: 11099028048
                          index: 0
                  time: 1588559331
                  mediantime: 1588558714
                  nonce: 0000015f00000000000000000f00000000000000000000000000000091060078
                  bits: 1e00bb4f
                  difficulty: 2799.054701674626
                  chainwork: 000000000000000000000000000000000000000000000000000029acbb5b0dc9
                  previousblockhash: 00000099767337bdf22bdbb7354509a9ed760298facbdcd40339b96590f85e26
                  nextblockhash: 0000009370f976e1d8be1634d291832039803836e951804e965af9066e18bde7
  /daemon/getblockhash:
    get:
      tags:
        - Daemon
      summary: Get block's hash
      description: Returns hash of block in best-block-chain at index provided. **Public**
      operationId: getBlockHash
      security: []
      parameters:
        - in: query
          name: index
          required: true
          schema:
            type: number
          description: Block number to get hash of
          example: 590823
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Block hash
              example:
                status: success
                data: >-
                  000000234b617194f3faff69ee62f0dde0115f2007c3b42e38eaba80c786a5e5
  /daemon/getblockheader:
    get:
      tags:
        - Daemon
      summary: Block header info
      description: Returns an Object with information about blockheader. **Public**
      operationId: getBlockHeader
      security: []
      parameters:
        - in: query
          name: hash
          required: true
          schema:
            type: string
          description: Block hash to get header info from
          example: 000000234b617194f3faff69ee62f0dde0115f2007c3b42e38eaba80c786a5e5
        - in: query
          name: verbose
          schema:
            default: true
            type: boolean
            enum:
              - true
              - false
          description: |
            If verbose is false, returns a string that is serialized,
            hex-encoded data for blockheader 'hash'. If verbose is true, returns
            an Object with information about blockheader hash.


            Example:

            - `hash`=`<block hash>`&`verbose`=`true`
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      hash:
                        type: string
                        description: Block hash
                      confirmations:
                        type: integer
                        description: Number of confirmations
                      height:
                        type: integer
                        description: Block height
                      version:
                        type: integer
                        description: Block version
                      merkleroot:
                        type: string
                        description: The merkle root
                      finalsaplingroot:
                        type: string
                        description: >-
                          The root of the Sapling commitment tree after applying
                          this block
                      time:
                        type: integer
                        description: The block time in seconds since epoch (Jan 1 1970 GMT)
                      nonce:
                        type: string
                        description: The nonce
                      solution:
                        type: string
                        description: The solution
                      bits:
                        type: string
                        description: The bits
                      difficulty:
                        type: number
                        description: The difficulty
                      chainwork:
                        type: string
                        description: Chainwork hash
                      previousblockhash:
                        type: string
                        description: Hash of previous block
                      nextblockhash:
                        type: string
                        description: Hash of next block
              example:
                status: success
                data:
                  hash: >-
                    000000234b617194f3faff69ee62f0dde0115f2007c3b42e38eaba80c786a5e5
                  confirmations: 9
                  height: 590823
                  version: 4
                  merkleroot: >-
                    61d6664cb4e3575d4362f922316712fe647555c313ab6c4625bb368a93b40cf6
                  finalsaplingroot: >-
                    6cb83efd5da7b16b4ef0adf1ae285f96f9d95cd1becfc81421f77b12c56902d5
                  time: 1588559331
                  nonce: >-
                    0000015f00000000000000000f00000000000000000000000000000091060078
                  solution: >-
                    0633eb663b294a0dfc52d5b0d395e1f227397a8bdcdf9f8e1d5a0b3031f95d9a85c2854e6abdba5f9f972456b73a2ab62ee01d02
                  bits: 1e00bb4f
                  difficulty: 2799.054701674626
                  chainwork: >-
                    000000000000000000000000000000000000000000000000000029acbb5b0dc9
                  previousblockhash: >-
                    00000099767337bdf22bdbb7354509a9ed760298facbdcd40339b96590f85e26
                  nextblockhash: >-
                    0000009370f976e1d8be1634d291832039803836e951804e965af9066e18bde7
  /daemon/getchaintips:
    get:
      tags:
        - Daemon
      summary: List of known chain tips
      description: >-
        Return information about all known tips in the block tree, including the
        main chain as well as orphaned branches. **Public**
      operationId: getChainTips
      security: []
      parameters:
        - in: query
          name: minheight
          required: false
          schema:
            type: integer
          description: >-
            Optional minimum height, converted to a number and passed to
            fluxd's `getchaintips` as its only argument. When omitted no
            argument is sent.
          example: 2000000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        height:
                          type: integer
                          description: Height of chain tip
                        hash:
                          type: string
                          description: Block hash of the tip
                        branchlen:
                          type: integer
                          description: >-
                            Length of branch connecting the tip to the main
                            chain (0 if main chain)
                        status:
                          type: string
                          description: Status of the chain
              example:
                status: success
                data:
                  - height: 591079
                    hash: >-
                      0000006d4467655a996e7c6a4023fc6f99010a5474cf87eb08995cb66ca65312
                    branchlen: 0
                    status: active
                  - height: 591062
                    hash: >-
                      000000aa6b44b3403e5623810c8193d87155444174841f7fc4b40256929eff1e
                    branchlen: 1
                    status: valid-fork
                  - height: 590420
                    hash: >-
                      0000002ee3a1bd1b4dcfbc6c025d133f325c6c8015cad3b9996df3c319162422
                    branchlen: 1
                    status: headers-only
                  - height: 590237
                    hash: >-
                      00000053167551792a9e556813a021665c95dc8e41d0e2ee35287cc0df1e9a39
                    branchlen: 1
                    status: valid-headers
                  - height: 573023
                    hash: >-
                      000000015b536301ce9335210590f0ceadc6ae081f2b228639c194cd4b88271d
                    branchlen: 1
                    status: valid-fork
                  - height: 567360
                    hash: >-
                      0000006656a0d8209a5c515f7f8967bb143d951cf8f3fed7c03d3cb0244e47ae
                    branchlen: 1
                    status: valid-fork
                  - height: 566803
                    hash: >-
                      0000001efb8e3485a385c12d1820645053082bf429413601deeb551d30be2786
                    branchlen: 1
                    status: valid-fork
                  - height: 559010
                    hash: >-
                      0000022ce968281284e2a503ce201ad55a8523d1f61f6309d84c917814ce382d
                    branchlen: 19
                    status: headers-only
                  - height: 449023
                    hash: >-
                      0000005df6591ba59a041a88dfecd7dae6c00d95e210867d8de5d24538f73981
                    branchlen: 1
                    status: valid-fork
                  - height: 448329
                    hash: >-
                      00000042c175d0a58246f367012c429a3e7edc906a9fe75875ed239ef563a38c
                    branchlen: 2
                    status: valid-fork
                  - height: 313888
                    hash: >-
                      00000016c58660e65feac88fbc40dd6ca3f34213de7648df716255fac99d3bff
                    branchlen: 1
                    status: valid-fork
                  - height: 309050
                    hash: >-
                      00000080b9a14c60174620f645f649e1b8bbfb40c2bdbedbf84f3dda7964f334
                    branchlen: 3
                    status: valid-fork
                  - height: 287750
                    hash: >-
                      0000001e50fb6dd3b42f15c18f9b46958eb7a6649e2396c19157cb02cb11098d
                    branchlen: 3
                    status: valid-fork
                  - height: 284893
                    hash: >-
                      0000006557265e2d68a78e5caf427fee238c6e137f4c9124254209a07cbb30b8
                    branchlen: 1
                    status: valid-fork
                  - height: 277682
                    hash: >-
                      000000278ca4049a8136aa4fa1e7a6b9c00b3e68505019d2976d7c66167c5142
                    branchlen: 34
                    status: valid-fork
                  - height: 260586
                    hash: >-
                      00000006bec95249932f478f4db27bed24cf5d9b76c041914408af1392f29be1
                    branchlen: 1
                    status: valid-fork
                  - height: 260179
                    hash: >-
                      00000032788a700fbeef2e6383b424eceafc24a70346efbc2f62ee95cbcc9bfa
                    branchlen: 1
                    status: valid-fork
                  - height: 257167
                    hash: >-
                      000000276fa3e3557e6a0df594c3ea47477dab4626e0aed8c2964c428a1f7c3d
                    branchlen: 1
                    status: valid-fork
                  - height: 257125
                    hash: >-
                      0000004401ccecffe93f175b7c50f29611874e987d3206f005d55569fd3230ca
                    branchlen: 1
                    status: valid-fork
                  - height: 257081
                    hash: >-
                      0000001adc8175b757096f65628f77c9247f82defdb98813ab248e65a1cebc6e
                    branchlen: 1
                    status: valid-fork
                  - height: 254707
                    hash: >-
                      0000003cb3b61f89afa0864c1312ac75a97c3650c2026cda83e08a06c425d0de
                    branchlen: 1
                    status: valid-fork
                  - height: 253887
                    hash: >-
                      0000003a011c3fbb70f4216a14686012d89a2751cbd0c74053f81da91a9293a8
                    branchlen: 1
                    status: valid-fork
                  - height: 250987
                    hash: >-
                      00000007ecfee7a6d3bf783e86c56a251c4bd4cdc0258398b692a8f3fd9dbeed
                    branchlen: 1
                    status: valid-fork
                  - height: 250820
                    hash: >-
                      0000003262698472ae5b39955633527e8c8656e126ff90f94f2cb922cde8a9a0
                    branchlen: 1
                    status: valid-fork
                  - height: 250102
                    hash: >-
                      00000049f03f3402f094eee4c117072915f92fb352e87e0c59309096ebb877aa
                    branchlen: 1
                    status: valid-fork
                  - height: 249084
                    hash: >-
                      00000018432f23446500e0dcf39a02b59b3e8583f30c7329653d166c1deb3e85
                    branchlen: 1
                    status: valid-fork
                  - height: 248591
                    hash: >-
                      0000003d2b53e4899649ec2b259d9b6718cbe0e7d73cd0907b48d8f0b7341c11
                    branchlen: 1
                    status: valid-fork
                  - height: 248394
                    hash: >-
                      0000004445e61be219a7030c06db6c31eda0fa720b95740c1d85456b4dbff45e
                    branchlen: 1
                    status: valid-fork
                  - height: 247501
                    hash: >-
                      000000640166be87a0d70d474389c934972ef0eca75977dae80e27a179fe16fc
                    branchlen: 1
                    status: valid-fork
  /daemon/getdifficulty:
    get:
      tags:
        - Daemon
      summary: Proof of work difficulty
      description: >-
        Returns the proof-of-work difficulty as a multiple of the minimum
        difficulty. **Public**
      operationId: getDifficulty
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: number
                    description: Proof of work difficulty as a multiple
              example:
                status: success
                data: 2572.645186022886
  /daemon/getmempoolinfo:
    get:
      tags:
        - Daemon
      summary: Memory pool info
      description: Returns details on the active state of the TX memory pool. **Public**
      operationId: getMempoolInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      size:
                        type: integer
                        description: Current tx count
                      bytes:
                        type: integer
                        description: Sum of all tx sizes
                      usage:
                        type: integer
                        description: Total memory usage for the mempool
              example:
                status: success
                data:
                  size: 0
                  bytes: 0
                  usage: 0
  /daemon/getrawmempool:
    get:
      tags:
        - Daemon
      summary: Transaction ids in memory pool
      description: >-
        Returns all transaction ids in memory pool as a json array of string.
        **Public**
      operationId: getRawMemPool
      security: []
      parameters:
        - in: query
          name: verbose
          schema:
            default: false
            type: boolean
            enum:
              - true
              - false
          description: |
            True for a json object, false for array of transaction ids.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      txid:
                        type: object
                        properties:
                          size:
                            type: integer
                            description: Transaction size in bytes
                          fee:
                            type: integer
                            description: Transaction fee in FLUX
                          time:
                            type: integer
                            description: >-
                              Local time transaction entered pool in seconds
                              since 1 Jan 1970 GMT
                          height:
                            type: integer
                            description: Block height when transaction entered pool
                          startingpriority:
                            type: integer
                            description: Priority when transaction entered pool
                          currentpriority:
                            type: integer
                            description: Transaction priority now
                          depends:
                            type: array
                            items:
                              type: string
                              description: >-
                                Unconfirmed transactions used as inputs for this
                                transaction
              example:
                status: success
                data:
                  2c2a34b81eeba402270465d3dcc44d41ef31e4bf6cae5cc8e2aeea64d7fce829:
                    size: 4284
                    fee: 0.0001
                    time: 1588593142
                    height: 591102
                    startingpriority: 10000000000000000
                    currentpriority: 10000000000000000
                    depends: []
                  5fbb025ff8a6f632b02545e353e15992e389ccd12dab2771f2d96c53c3e2382a:
                    size: 895
                    fee: 0.0001
                    time: 1588593155
                    height: 591102
                    startingpriority: 10000000000000000
                    currentpriority: 10000000000000000
                    depends: []
                  afc2f6ff2b9a546a3e0c5ba951338043f9866f23ad53622c5cc3b97ae0c89281:
                    size: 198
                    fee: 0.0001
                    time: 1588592875
                    height: 591101
                    startingpriority: 0
                    currentpriority: 0
                    depends: []
                  0e99affa132cfea43ad7f31923a00a4cab1ace5e7343b0e40dad346d94138fb8:
                    size: 198
                    fee: 0.0001
                    time: 1588593142
                    height: 591101
                    startingpriority: 0
                    currentpriority: 0
                    depends: []
                  f2d51d5c678ea6a27670e3552b66adda606a43b57222ab6363ea0d2001c292c9:
                    size: 1189
                    fee: 0.0001
                    time: 1588593018
                    height: 591102
                    startingpriority: 10000000000000000
                    currentpriority: 10000000000000000
                    depends: []
                  5af1b85af6e0e58e1ac00c5a93c51e0a6da927cdf8f9f981159acdf55fb382d2:
                    size: 2611
                    fee: 0.0001
                    time: 1588592924
                    height: 591102
                    startingpriority: 10000000000000000
                    currentpriority: 10000000000000000
                    depends: []
  /daemon/gettxout:
    get:
      tags:
        - Daemon
      summary: Unspent transaction output
      description: >-
        Returns details about an unspent transaction output (fluxd `gettxout`).
        **Public**
      operationId: getTxOut
      security: []
      parameters:
        - in: query
          name: txid
          required: true
          schema:
            type: string
          description: The transaction id
          example: 9e3cdde1b7c92728a1200a988bb046028fe93b9f1e15cc370974f7201d3d3a94
        - in: query
          name: 'n'
          required: true
          schema:
            type: integer
          description: Vout value
          example: 1
        - in: query
          name: includemempool
          schema:
            default: true
            type: boolean
            enum:
              - true
              - false
          description: >
            Whether to include the mempool.


            Example:

            - `txid`=`<transaction id>`&`n`=`<vout
            value>`&`includemempool`=`true`
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      bestblock:
                        type: string
                        description: Block hash
                      confirmations:
                        type: integer
                        description: The number of confirmations
                      value:
                        type: number
                        description: The transaction value in FLUX
                      scriptPubKey:
                        type: object
                        properties:
                          asm:
                            type: string
                            description: Script public key
                          hex:
                            type: string
                            description: Hex
                          reqSigs:
                            type: number
                            description: Number of required signatures
                          type:
                            type: string
                            description: 'The type, eg pubkeyhash'
                          addresses:
                            type: array
                            items:
                              type: string
                      version:
                        type: integer
                        description: The version number
                      coinbase:
                        type: boolean
                        description: Coinbase or not
              example:
                status: success
                data:
                  bestblock: >-
                    0000001dca878efaa3ae059492bd108cd2e53708325f609f21ffb948f8769115
                  confirmations: 9
                  value: 9.375
                  scriptPubkey:
                    asm: >-
                      OP_DUP OP_HASH160 961f695fbc075b7f99f0b45323206930340efc98
                      OP_EQUALVERIFY OP_CHECKSIG
                    hex: 76a914961f695fbc075b7f99f0b45323206930340efc9888ac
                    reqSigs: 1
                    type: pubkeyhash
                    addresses:
                      - t1XZNzdMMDZ4QPRD2a6hHWQ4Mog3HF9mCMp
                  version: 4
                  coinbase: true
  /daemon/gettxoutproof:
    get:
      tags:
        - Daemon
      summary: Hex-encoded proof of transaction
      description: >-
        Returns a hex-encoded proof that "txid" was included in a block.
        **Public**
      operationId: getTxOutProof
      security: []
      parameters:
        - in: query
          name: txids
          required: true
          schema:
            type: string
          description: The transaction id or comma separated list of txids
          example: 9e3cdde1b7c92728a1200a988bb046028fe93b9f1e15cc370974f7201d3d3a94
        - in: query
          name: blockhash
          schema:
            type: string
          description: 'If specified, looks for txid in the block with this hash'
          example: 000000142fc5a382f6db5895faa7e9519721be67560cfd0c2171634d541bc38e
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: >-
                      A string that is a serialized, hex-encoded data for the
                      proof
              example:
                status: success
                data: >-
                  04000000e6f6eb7762f7970a06ad119590ba1882a30e290e3f6837cc64960f1b70000000fde035a9548fe35311b0212323eeeb9844c9ab093b24982d397fd94ab68f68725f44c0da150b3d68af0671dc272b007c4354a03d63298b00ad7700d4b818f70a4d0ab05eaca2001e0001b8750000000000000000000000000000000000000000000000003eae1205340a77b45fde07253220864115fe31c3a77f1e84b358edafad9929200de7c90f8d38878f423f9dc35266b6fd8280e56d3615b988540100000001fde035a9548fe35311b0212323eeeb9844c9ab093b24982d397fd94ab68f68720101
  /daemon/gettxoutsetinfo:
    get:
      tags:
        - Daemon
      summary: Unspent transaction output set info
      description: Returns statistics about the unspent transaction output set. **Public**
      operationId: getTxOutSetInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      height:
                        type: integer
                        description: Current block
                      bestblock:
                        type: string
                        description: Best block hash hex
                      transactions:
                        type: integer
                        description: The number of transactions
                      txouts:
                        type: integer
                        description: The number of output transactions
                      bytes_serialized:
                        type: integer
                        description: The serialized size
                      hash_serialized:
                        type: string
                        description: The serialized hash
                      total_amount:
                        type: number
                        description: The total amount
              example:
                status: success
                data:
                  height: 591140
                  bestblock: >-
                    0000005b43e6418210b25804493880c9834c2ae969bceb53f579282e6e077427
                  transactions: 320076
                  txouts: 2626978
                  bytes_serialized: 80210836
                  hash_serialized: >-
                    151a45f9f10274ebc622877355f6c64a5ae6a8561c186d2028cb32127d3bf093
                  total_amount: 99020653.199865
  /daemon/verifytxoutproof:
    get:
      tags:
        - Daemon
      summary: Verifies a proof
      description: >-
        Verifies that a proof points to a transaction in a block, returning the
        transaction it commits to and throwing an RPC error if the block is not
        in our best chain. **Public**
      operationId: verifyTxOutProof
      security: []
      parameters:
        - in: query
          name: proof
          required: true
          schema:
            type: string
          description: The hex-encoded proof generated by gettxoutproof
          example: >-
            04000000e6f6eb7762f7970a06ad119590ba1882a30e290e3f6837cc64960f1b70000000fde035a9548fe35311b0212323eeeb9844c9ab093b24982d397fd94ab68f68725f44c0da150b3d68af0671dc272b007c4354a03d63298b00ad7700d4b818f70a4d0ab05eaca2001e0001b8750000000000000000000000000000000000000000000000003eae1205340a77b45fde07253220864115fe31c3a77f1e84b358edafad9929200de7c90f8d38878f423f9dc35266b6fd8280e56d3615b988540100000001fde035a9548fe35311b0212323eeeb9844c9ab093b24982d397fd94ab68f68720101
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: string
                      description: Txid
              example:
                status: success
                data:
                  - >-
                    72688fb64ad97f392d98243b09abc94498ebee232321b01153e38f54a935e0fd
  /daemon/getspentinfo:
    get:
      tags:
        - Daemon
      summary: Return spent info
      description: >-
        Return spent info. Transaction ID and index required as parameters.
        **Public**
      operationId: Getspentinfo
      security: []
      parameters:
        - in: query
          name: txid
          required: true
          schema:
            type: string
          description: The transaction id
          example: 9e3cdde1b7c92728a1200a988bb046028fe93b9f1e15cc370974f7201d3d3a94
        - in: query
          name: index
          required: true
          schema:
            type: integer
          description: index
          example: 0
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  txid: 83d91028a75ddc6ee79153f0c4babe4f13d5fbf2f6160ff861683d7098f1790e
                  index: 1
                  height: 590926
    post:
      tags:
        - Daemon
      summary: Return spent info, POST
      description: >-
        Return spent info, with the transaction id and output index sent in the
        request body. **Public**
      operationId: GetspentinfoPost
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                txid:
                  type: string
                index:
                  type: integer
            example:
              txid: 9e3cdde1b7c92728a1200a988bb046028fe93b9f1e15cc370974f7201d3d3a94
              index: 0
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  txid: 83d91028a75ddc6ee79153f0c4babe4f13d5fbf2f6160ff861683d7098f1790e
                  index: 1
                  height: 590926
  /daemon/getblocksubsidy:
    get:
      tags:
        - Daemon
      summary: Block reward
      description: >-
        Returns block subsidy reward, taking into account the mining slow start
        of block at index provided. **Public**
      operationId: getBlockSubsidy
      security: []
      parameters:
        - in: query
          name: height
          schema:
            type: integer
          description: >-
            The block height. If not provided, defaults to the current height of
            the chain.
          example: 575000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      miner:
                        type: integer
                        description: The mining reward amount in FLUX
              example:
                status: success
                data:
                  miner: 150
  /daemon/getblocktemplate:
    get:
      tags:
        - Daemon
      summary: Data to construct a block
      description: It returns data needed to construct a block to work on. **Public**
      operationId: getBlockTemplate
      security: []
      parameters:
        - in: query
          name: jsonrequestobject
          description: >
            A JSON object, sent as a string.
            If the request parameters include a 'mode' key, that is used

            to explicitly select between the default template request or a

            proposal. This must be set to "template" or omitted.


            For the capabilities array of strings the following are the client
            side supported features.

            - `longpoll`

            - `coinbasetxn`

            - `coinbasevalue`

            - `proposal`

            - `serverlist`

            - `workid`
          schema:
            type: string
          example: '{"mode":"template","capabilities":["proposal"]}'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      capabilities:
                        type: array
                        items:
                          type: string
                      version:
                        type: integer
                        description: Version number
                      previousblockhash:
                        type: string
                        description: Block hash of current highest block
                      finalsaplingroothash:
                        type: string
                        description: Hash of the final sapling root
                      transactions:
                        type: array
                        items:
                          properties:
                            data:
                              type: string
                              description: Transaction data encoded in hexadecimal
                            hash:
                              type: string
                              description: Hash/id encoded in little-endian hexadecimal
                            depends:
                              type: array
                              items:
                                type: integer
                                description: >-
                                  Transactions before this one (by 1-based index
                                  in transaction list) that must be present in
                                  the final block if this one is
                            fee:
                              type: integer
                              description: >-
                                Difference in value between transaction inputs
                                and outputs(in Satoshis); for coinbase
                                transactions, this is a negative number of the
                                collected block fees (ie, not including the
                                block subsidy); if key is not present, fee is
                                unknown and client must not assume there isn't
                                one
                            sigops:
                              type: integer
                              description: >-
                                Total number of SigOps, as counted for purposes
                                of the block limits; if key is not present,
                                sigop count is unknown and clients must not
                                assume there aren't any
                            required:
                              type: boolean
                              description: >-
                                If provided and true, this transaction must be
                                in the final block
                      coinbasetxn:
                        type: object
                        properties:
                          data:
                            type: string
                            description: Transaction data encoded in hexadecimal
                          hash:
                            type: string
                            description: Hash/id encoded in little-endian hexadecimal
                          depends:
                            type: array
                            items:
                              type: integer
                              description: >-
                                Transactions before this one (by 1-based index
                                in transaction list) that must be present in the
                                final block if this one is
                          fee:
                            type: integer
                            description: >-
                              Difference in value between transaction inputs and
                              outputs(in Satoshis); for coinbase transactions,
                              this is a negative number of the collected block
                              fees (ie, not including the block subsidy); if key
                              is not present, fee is unknown and client must not
                              assume there isn't one
                          sigops:
                            type: integer
                            description: >-
                              Total number of SigOps, as counted for purposes of
                              the block limits; if key is not present, sigop
                              count is unknown and clients must not assume there
                              aren't any
                          required:
                            type: boolean
                            description: >-
                              If provided and true, this transaction must be in
                              the final block
                      longpollid:
                        type: string
                        description: Long polling id
                      target:
                        type: string
                        description: The hash target
                      mintime:
                        type: integer
                        description: >-
                          The minimum timestamp appropriate for the next block
                          time in seconds since epoch (Jan 1 1970 GMT)
                      mutable:
                        type: array
                        items:
                          type: string
                          description: >-
                            A way the block template may be changed, e.g. time,
                            transactions, prevblock
                      noncerange:
                        type: string
                        description: A range of valid nonces
                      sigoplimit:
                        type: integer
                        description: Limit of sigops in the blocks
                      sizelimit:
                        type: integer
                        description: Limit of block size
                      curtime:
                        type: integer
                        description: >-
                          Current timestamp in seconds since epoch (Jan 1 1970
                          GMT)
                      bits:
                        type: string
                        description: Compressed target of next block
                      height:
                        type: integer
                        description: The height of the next block
                      basic_fluxnode_address:
                        type: string
                        description: FLUX address
                      basic_fluxnode_payout:
                        type: integer
                        description: Amount
                      super_fluxnode_address:
                        type: string
                        description: FLUX address
                      super_fluxnode_payout:
                        type: integer
                        description: Amount
                      bamf_fluxnode_address:
                        type: string
                        description: FLUX address
                      bamf_fluxnode_payout:
                        type: integer
                        description: Amount
              example:
                status: success
                data:
                  capabilities:
                    - proposal
                  version: 4
                  previousblockhash: >-
                    000000658616bec155572e8f1f8373d32267238f1afaf3b93fdbf71706436417
                  finalsaplingroothash: >-
                    5cd6119b539920ae7b373b85cdcc2299b4701a046e51240dc9258ca0d0a5c918
                  transactions:
                    - data: >-
                        050000000470561a8cf2d80e49eaed6d74782cc0c8a012a1d39a493d021a4ac50efe530a0400000000b068b05e010b68b05e010d39312e3233382e3130352e3330411b79e3112833b65ded5c5bf093a10086297eed5ec132c6627acecccd3368406fa83d9d5b6266639986e5a8670e4b0ae48ee1c4be9e607eaee4d2e8a8ca6815b578411b6f7121b06ae754770f9f9da616ed86ec71215e21ba7f483ebe1be8e49118e2722c8c45c89d751bf9c9c88f35c001a85bd17425b85167e960ca53ddce9cadafa4
                      hash: >-
                        1a4682d42a7c05054ab20f16c07a69cf93c53d790707988a961fc0aa2396d703
                      depends: []
                      fee: 0
                      sigops: 0
                    - data: >-
                        0400008085202f89000170a8464f010000001976a91490ae1d0392cc0d77d8dc7ac22f2161a7fc011f7088ac00000000ee05090058ac464f0100000002c9a84df2ebfaceb5b781b29f5cccd926881f7fdc22a3569eb4e3f52ecb6a91b57e26214c732ebd7ff20e3a3da7a6c71f0a0fea30e7bf7400ea6273f49394e152dbf79084a25447231a1547f55fecacc09adf1e5efed5bb39bfd330f7d43b37397b4dd57a38810248488fbff354be64ca982ffc4aa5a20b0f2be9421b17be6687aa447958c4706f7a38d1b7f4c4a26cfb671f9b755cb70d1a925ebed84051abeb1e421234acbeb78591f11296859d41dcb824e929d15c4062a027f32f396cff3f91d98fc92b776b9640437e6e1ae74fe62ff27fef677a3b8c35a9b398b00eb6fb0f16fe6108c4ced2c8a76f0c760eb3275e9b66fd87605a181ae982688b5d93115315e79e59189ab7abd5f21525f7f89b879fe6d97dcd88937d26970c6b8513ecd6e736148ae3e03fc61f5f651923d5994fac65cf8efe9b44548ebe1431027ed875e4495ddbc2bf8421b5d387fa679692f2e1b4cca70ae06693d7bbf67448ac0fe02f160c52952c5493bc23f56cbac4a5279e72d9d39fea76ea702e1f02476f059ff80f11c1b39f805ddab1705e6e3933b12d85df7d609a785bbc74fc0b8db6447e26214c732ebd7ff20e3a3da7a6c71f0a0fea30e7bf7400ea6273f49394e1528a9a70138419184d99a375e03a2b35d675d571edbbada814c909c2477c808e62d7fb06cfab8d3819e4ffe8270208e13c308796c24c01495b6c3984fb9c65e25a855b41b1c31fb7a5290c8d0532be8e1348f02065c8155f187990fed839812b485fa843776329b833087aeab4c15707ceaa7d1bc798b01fe3560bc6cd1fce303e9469525ce9b058940801c5a710b8f3c4ac6249aa3be797a625efc5ff3c7ac40704f02eadf30e883104f5f4a1e287ecfda2806311fce153dab5122dcf63bc8c075a3a1e7684cabad686bbda1e156f062da0f787ad8a85588688159f0f8c0b7453a005cfe181e8aaf3e28776d1f7f7d5ab0b4e3e2f365f41ef89301c7c6278fc1b929120a3a20ee54fad064ff52b9a152badee46b0ad61370667bd0bb2b3dab34178d6232c12dfcf5f1a3413f0ea74474678b05fe20f3fa9d0bc57fda979dd5e0101dc6ccdc8380ce5db926cd06e2d7a7ccb972923aaec2f54573033c5548d9cc1db9b80d58723b2737685608b08fbc064c78143dc385036a505d2cef5933a45cb45886308fd5b762ee49d448264ef4f7908d79a6528443f0c290aecdcc4da843b6d7f5be18b395fba03d778545df324f06796afc84666ea838c320912aebf9905a13189cfd77002cd8f81d3b0c5fc37078e4e3916e0ed142dd35d0c30fd98bf0cbb9bc359c05c9b940d0724fff4d0a14d86c6d8fa7b76b580d5ead667e252512ab28740d817967aa73e425551d7d68b318d515b86f89c5e471036b8f020ad04de9730af2f07e9b2cf98c1261cfe895a92558971000b3b110055aca51d3cc63dd347b39ca73d415135e608684a685235a10834ac2354ebcf068f56ea6874d8373850e9cd01f25b92735a21a3333dcf89c838a00a1ee2e6023ab3adddce55ecdd69ce7c0ad4deb46be2ac90d35103f1cbf29bb926948728de0a9ccaee62b1657798b178ef4e3c3783f65fc22d464b7572167430c4aeda88a65741c2ed4346e278c092958e2ef4a95a36fb38559962a064b51b8d2a5118f86b2c0af87b9e30bdb59e818a9a4e10c6f5e90610f3ca5d49ab802b73236f8c4c4940b3eb324f891e29dcb52b7774301131ba9cd19c7b3e608688da6828512beeb765022efb33a18d1c06fa72be61d069031e8c9bae91adbfefce323aac658b0a5572d703d938c7ad47ddca2d4139dbd36ab562f6393aff333e556a275d763504360850b7729257f34f3f5a7ec0d2d00a9f923db937a1ea186f1a2aeab93a6f26a642d00aa89ac335a3a67404954f0b967bab5b7168db3b052e29ca37de47fe441ce528ba7d866db6d74a129897d117c5f425098b0c6dd5d6fc95fa70b0de00d6cd0a2e509625cfff8fe8e02f422fbb085536611a203b08415bfc3da6b4cfeea96eddbb1e9ff89d399f5a1172e19a1b67c30c22e3b9d636675ff05b40168b9e6adad1024af37bbc4545689fbe19ecf0c42c33d9c833bb84fdc191399327819e4086c14c99fcbf7d1d4bcf9a17049d50a584c5eaee2ac055a9d907e6c6dcfb71a99714b165a17d244e05fafe75c641941d566200566209bb8dd2ca677997c88253748ba43f8274ed79ba4bc8fd55bd218fff66a8d41e7e1380ee331bbfe8d0f4af30a6078436008a5d9ff677e0e33c3506f406ca4324d2b2dfd1222695dcbd551429833a56952786369c9ff6337f4f98cb74129ab521923d7fa02a19141deef9537a21f2c7d1aa97e6c77e57806eb85780efa659ba2b61c34e041eabf3f4aaece1cd9d652b91b2f4d84217c6ca323591b5de95e145dde6d2d3d07257b426806b009559b900604b3983b5d15cf6fce2372675fb4da3e47fd1578642462afc24d0e7e3bcc810ffb80c20aaa5ade917d988e033e70702016a33628b3ed0d52ad89f09
                      hash: >-
                        16c3b8b299ebe6185fc6a15f73741430a54fe628c33b4b25e84471b0d1dece61
                      depends: []
                      fee: 1000
                      sigops: 1
                  coinbasetxn:
                    data: >-
                      0400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff0503da050900ffffffff0468648d9e020000001976a914e210e47fc7fa4138c1dfd09358428e5421160c3b88aca0118721000000001976a9145bd98eb8a35c8c00cff5f0050ecd6e0ea4de66fd88ac601de137000000001976a9144dfad8f2081b808a2a9f9f16729e0a1fd5c6494b88ac80461c86000000001976a9144e5973f34e5cc452156126b541ca0c9bcaae91e488ac00000000000000000000000000000000000000
                    hash: >-
                      2aafbaa9024d62bb355951c877ca566b3883b182994297d7c581c365e5852702
                    depends: []
                    fee: 1000
                    sigops: 4
                    required: true
                  longpollid: >-
                    000000658616bec155572e8f1f8373d32267238f1afaf3b93fdbf7170643641717961
                  target: >-
                    000000c43b000000000000000000000000000000000000000000000000000000
                  mintime: 1588618940
                  mutable:
                    - time
                    - transactions
                    - prevblock
                  noncerange: 00000000ffffffff
                  sigoplimit: 20000
                  sizelimit: 2000000
                  curtime: 1588619452
                  bits: 1e00c43b
                  height: 591322
                  miner_reward: 11250001000
                  basic_fluxnode_address: t1SFG7xCkwWRP4tXhZrJmq7sWDFBniaNA16
                  basic_fluxnode_payout: 562500000
                  super_fluxnode_address: t1QyvYHuxfw6MQB1nsSvDdBPcsXqWsYKYDr
                  super_fluxnode_payout: 937500000
                  bamf_fluxnode_address: t1R1ssbaVXMZqbG8iwaD57xCS2w92pJefkw
                  bamf_fluxnode_payout: 2250000000
  /daemon/getlocalsolps:
    get:
      tags:
        - Daemon
      summary: Average solutions per second
      description: >-
        Returns the average local solutions per second since this node was
        started. **Public**
      operationId: getLocalSolPs
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: integer
                    description: Average sols per second
              example:
                status: success
                data: 0
  /daemon/getmininginfo:
    get:
      tags:
        - Daemon
      summary: Mining related info
      description: Returns a json object containing mining-related information. **Public**
      operationId: getMiningInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      blocks:
                        type: integer
                        description: The current block
                      currentblocksize:
                        type: integer
                        description: The last block size
                      currentblocktx:
                        type: integer
                        description: The last block transaction
                      difficulty:
                        type: number
                        description: The current difficulty
                      errors:
                        type: string
                        description: Current errors
                      genproclimit:
                        type: integer
                        description: >-
                          The processor limit for generation. -1 if no
                          generation. (see getgenerate or setgenerate calls)
                      localsolps:
                        type: integer
                        description: >-
                          The average local solution rate in Sol/s since this
                          node was started
                      networksolps:
                        type: integer
                        description: The estimated network solution rate in Sol/s
                      networkhashps:
                        type: integer
                        description: The estimated network hash rate in Hash/s
                      pooledtx:
                        type: integer
                        description: The size of the mem pool
                      testnet:
                        type: boolean
                        description: If using testnet or not
                      chain:
                        type: string
                        description: >-
                          Current network name as defined in BIP70 (main, test,
                          regtest)
                      generate:
                        type: boolean
                        description: >-
                          If the generation is on or off (see getgenerate or
                          setgenerate calls
              example:
                status: success
                data:
                  blocks: 591371
                  currentblocksize: 1000
                  currentblocktx: 0
                  difficulty: 3214.481774201274
                  errors: ''
                  genproclimit: -1
                  localsolps: 0
                  networksolps: 188688
                  networkhashps: 188688
                  pooledtx: 78
                  testnet: false
                  chain: main
                  generate: false
  /daemon/getnetworkhashps:
    get:
      tags:
        - Daemon
      summary: Estimated network solutions
      description: >-
        Returns the estimated network solutions per second based on the last n
        blocks. **Public**
      operationId: getNetworkHashPs
      security: []
      parameters:
        - in: query
          name: blocks
          schema:
            default: 120
            type: integer
          description: >-
            The number of blocks, or -1 for blocks over difficulty averaging
            window.
          example: 200
        - in: query
          name: height
          schema:
            default: -1
            type: integer
          description: >-
            To estimate at the time of the given height; -1 (the default) uses
            the current tip.
          example: 575000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: integer
                    description: Estimated network solutions per second
              example:
                status: success
                data: 189503
  /daemon/getnetworksolps:
    get:
      tags:
        - Daemon
      summary: Estimated network solutions
      description: >-
        Returns the estimated network solutions per second based on the last n
        blocks. **Public**
      operationId: getNetworkSolPs
      security: []
      parameters:
        - in: query
          name: blocks
          schema:
            default: 120
            type: integer
          description: >-
            The number of blocks, or -1 for blocks over difficulty averaging
            window.
          example: 200
        - in: query
          name: height
          schema:
            default: -1
            type: integer
          description: >-
            To estimate at the time of the given height; -1 (the default) uses
            the current tip.
          example: 575000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: integer
                    description: Estimated network solutions per second
              example:
                status: success
                data: 189503
  /daemon/getconnectioncount:
    get:
      tags:
        - Daemon
      summary: Connection count
      description: The peer connection count. **Public**
      operationId: getConnectionCount
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: integer
                    description: Connection count
              example:
                status: success
                data: 22
  /daemon/getdeprecationinfo:
    get:
      tags:
        - Daemon
      summary: Deprecation info
      description: >-
        Returns an object containing current version and deprecation block
        height. Applicable only on mainnet. **Public**
      operationId: getDeprecationInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      version:
                        type: integer
                        description: The server version
                      subversion:
                        type: string
                        description: The server subversion string
                      deprecationheight:
                        type: integer
                        description: >-
                          The block height at which this version will deprecate
                          and shut down
              example:
                status: success
                data:
                  version: 4000150
                  subversion: '/MagicBean:4.0.1/'
                  deprecationheight: 951040
  /daemon/getnettotals:
    get:
      tags:
        - Daemon
      summary: Network traffic info
      description: >-
        Returns information about network traffic, including bytes in, bytes
        out, and current time. **Public**
      operationId: getNetTotals
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      totalbytesrecv:
                        type: integer
                        description: Total bytes received
                      totalbytessent:
                        type: integer
                        description: Total bytes sent
                      timemillis:
                        type: integer
                        description: Total cpu time
              example:
                status: success
                data:
                  totalbytesrecv: 27003767
                  totalbytessent: 115073751
                  timemillis: 1588626897371
  /daemon/getnetworkinfo:
    get:
      tags:
        - Daemon
      summary: Info regarding P2P network
      description: >-
        Returns an object containing various state info regarding P2P
        networking. **Public**
      operationId: getNetworkInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      version:
                        type: integer
                        description: The server version
                      subversion:
                        type: string
                        description: The server subversion string
                      protocolversion:
                        type: integer
                        description: The protocol version
                      localservices:
                        type: string
                        description: The services we offer to the network
                      timeoffset:
                        type: integer
                        description: The time offset
                      connections:
                        type: integer
                        description: Number of connections
                      networks:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                              description: 'Network (ipv4, ipv6 or onion)'
                            limited:
                              type: boolean
                              description: Is the network limited using -onlynet?
                            reachable:
                              type: boolean
                              description: Is the network reachable?
                            proxy:
                              type: string
                              description: >-
                                The proxy that is used for this network, or
                                empty if none
                            proxy_randomize_credentials:
                              type: boolean
                              description: Does proxy randomize credentials?
                      relayfee:
                        type: number
                        description: Minimum relay fee for non-free transactions in FLUX/kB
                      localaddresses:
                        type: array
                        items:
                          type: object
                          properties:
                            address:
                              type: string
                              description: Network addess
                            port:
                              type: integer
                              description: Network port
                            score:
                              type: integer
                              description: Relative score
                      warnings:
                        type: string
                        description: Any network warnings (such as alert messages)
              example:
                status: success
                data:
                  version: 4000150
                  subversion: '/MagicBean:4.0.1/'
                  protocolversion: 170016
                  localservices: 5
                  timeoffset: 0
                  connections: 28
                  networks:
                    - name: ipv4
                      limited: false
                      reachable: true
                      proxy: ''
                      proxy_randomize_credentials: false
                    - name: ipv6
                      limited: false
                      reachable: true
                      proxy: ''
                      proxy_randomize_credentials: false
                    - name: onion
                      limited: true
                      reachable: false
                      proxy: ''
                      proxy_randomize_credentials: false
                  relayfee: 0.000001
                  localaddresses:
                    - address: 96.30.196.88
                      port: 16125
                      score: 1433
                  warnings: ''
  /daemon/getpeerinfo:
    get:
      tags:
        - Daemon
      summary: Peer info
      description: >-
        Returns data about each connected network node as a json array of
        objects. **Public**
      operationId: getPeerInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: Peer index
                        addr:
                          type: string
                          description: Ip address and port of the peer
                        addrlocal:
                          type: string
                          description: Local address
                        services:
                          type: string
                          description: The services offered
                        lastsend:
                          type: integer
                          description: >-
                            The time in seconds since epoch (Jan 1 1970 GMT) of
                            the last send
                        lastrecv:
                          type: integer
                          description: >-
                            The time in seconds since epoch (Jan 1 1970 GMT) of
                            the last receive
                        bytessent:
                          type: integer
                          description: Total bytes sent
                        bytesrecv:
                          type: integer
                          description: Total bytes recieved
                        conntime:
                          type: integer
                          description: >-
                            The connection time in seconds since epoch (Jan 1
                            1970 GMT)
                        timeoffset:
                          type: integer
                          description: The time offset in seconds
                        pingtime:
                          type: number
                          description: Png time
                        version:
                          type: integer
                          description: The peer version
                        subver:
                          type: string
                          description: The string version
                        inbound:
                          type: boolean
                          description: Inbound (true) or Outbound (false)
                        startingheight:
                          type: integer
                          description: The starting height (block) of the peer
                        banscore:
                          type: integer
                          description: The ban score
                        synced_headers:
                          type: integer
                          description: The last header we have in common with this peer
                        synced_blocks:
                          type: integer
                          description: The last block we have in common with this peer
                        inflight:
                          type: array
                          items:
                            type: integer
                            description: >-
                              The heights of blocks we're currently asking from
                              this peer
                        whitelisted:
                          type: boolean
                          description: Is peer whitelisted?
              example:
                status: success
                data:
                  - id: 741
                    addr: '159.65.254.184:16125'
                    addrlocal: '96.30.196.88:46270'
                    services: 5
                    lastsend: 1588677108
                    lastrecv: 1588677108
                    bytessent: 1955685
                    bytesrecv: 2801490
                    conntime: 1588497832
                    timeoffset: 0
                    pingtime: 0.019793
                    version: 170016
                    subver: '/MagicBean:4.0.1(bitcore)/'
                    inbound: false
                    startingheight: 590308
                    banscore: 90
                    synced_headers: 591801
                    synced_blocks: 591801
                    inflight: []
                    whitelisted: false
                  - id: 847
                    addr: '116.203.52.168:16125'
                    addrlocal: '96.30.196.88:58594'
                    services: 5
                    lastsend: 1588677081
                    lastrecv: 1588677081
                    bytessent: 1281133
                    bytesrecv: 2176814
                    conntime: 1588519342
                    timeoffset: 0
                    pingtime: 0.107897
                    version: 170016
                    subver: '/MagicBean:4.0.1(bitcore)/'
                    inbound: false
                    startingheight: 590491
                    banscore: 90
                    synced_headers: 591801
                    synced_blocks: 591801
                    inflight: []
                    whitelisted: false
  /daemon/listbanned:
    get:
      tags:
        - Daemon
      summary: Ban list
      description: List all banned IPs/Subnets. **Public**
      operationId: listBanned
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        address:
                          type: string
                          description: Ip/subnet
                        banned_until:
                          type: integer
                          description: The time in seconds since epoch (Jan 1 1970 GMT)
              example:
                status: success
                data:
                  - address: 5.189.130.70/255.255.255.255
                    banned_until: 1588737697
                  - address: 46.4.142.199/255.255.255.255
                    banned_until: 1588474952
                  - address: 62.171.153.25/255.255.255.255
                    banned_until: 1588737698
                  - address: 62.171.166.168/255.255.255.255
                    banned_until: 1588745015
  /daemon/createrawtransaction:
    get:
      tags:
        - Daemon
      summary: Create raw transaction (GET)
      description: >-
        Creates an unsigned raw transaction (fluxd `createrawtransaction`) from
        the query string. `transactions` and `addresses` are JSON strings;
        `locktime` defaults to 0 and `expiryheight` to the current block count
        + 20. **Public**
      operationId: createRawTransaction
      security: []
      parameters:
        - name: transactions
          in: query
          required: true
          schema:
            type: string
          description: JSON string of transaction inputs
        - name: addresses
          in: query
          required: true
          schema:
            type: string
          description: JSON string of output addresses and amounts
        - name: locktime
          in: query
          required: false
          schema:
            type: integer
            default: 0
          description: Transaction locktime
        - name: expiryheight
          in: query
          required: false
          schema:
            type: integer
          description: Transaction expiry height
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Raw transaction hex
    post:
      tags:
        - Daemon
      summary: Create hex-encoded raw transaction
      description: >-
        Create a transaction spending the given inputs and sending to the given
        addresses. Returns hex-encoded raw transaction. Note that the
        transaction's inputs are not signed, and it is not stored in the wallet
        or transmitted to the network. **Public**
      operationId: createRawTransactionPost
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                transactions:
                  type: array
                  items:
                    type: object
                    description: Objects pertaining to the transaction
                    properties:
                      txid:
                        type: string
                        description: The transaction id
                      vout:
                        type: integer
                        description: The output index
                      sequence:
                        type: integer
                        description: Sequence number (optional)
                addresses:
                  type: object
                  description: Object with addresses as keys and amounts as values
                locktime:
                  type: integer
                  default: 0
                  description: >-
                    Raw locktime. Non-0 value also locktime-activates inputs.
                    (optional)
                expiryheight:
                  type: integer
                  description: Expiry height of transaction (optional; defaults to the current block count + 20)
            example:
              transactions:
                - txid: >-
                    224225b04fd54e8653e7cd4440dd4596aab6eff8be8686bacfad9213172da4369f
                  vout: 0
              addresses:
                t1JKRwXGfKTGfPV1z48rvoLyabk31z3xwHa: 112.5
              locktime: 10
              expiryheight: 595000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Hex string of the transaction
              example:
                status: success
                data: >-
                  0400008085202f89019f36a42d171392adcfba8686bef8efb6aa9645dd4044cde753864ed54fb025420000000000feffffff0180608d9e020000001976a91404e2699cec5f44280540fb752c7660aa3ba857cc88ac01000000fb0809000000000000000000000000
  /daemon/decoderawtransaction:
    post:
      tags:
        - Daemon
      summary: Decoded info of the hex-encoded transaction
      description: >-
        Return a JSON object representing the serialized, hex-encoded
        transaction. **Public**
      operationId: decodeRawTransactionPost
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                hexstring:
                  type: string
                  description: Hex-encoded transaction
            example:
              hexstring: >-
                0400008085202f89019f36a42d171392adcfba8686bef8efb6aa9645dd4044cde753864ed54fb025420000000000feffffff0180608d9e020000001976a91404e2699cec5f44280540fb752c7660aa3ba857cc88ac01000000fb0809000000000000000000000000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/decoderawtransaction'
              example:
                status: success
                data:
                  txid: >-
                    03c228785451de39ce396c85168c979a439dcb2037f92d0a57de81e6b1c9f3a4
                  version: 4
                  overwintered: true
                  versiongroupid: 892f2085
                  locktime: 1
                  expiryheight: 592123
                  vin:
                    - txid: >-
                        4225b04fd54e8653e7cd4440dd4596aab6eff8be8686bacfad9213172da4369f
                      vout: 0
                      scriptSig:
                        asm: ''
                        hex: ''
                      sequence: 4294967295
                  vout:
                    - value: 112.5001
                      valueZat: 11250010000
                      valueSat: 11250010000
                      'n': 0
                      scriptPubKey:
                        asm: >-
                          OP_DUP OP_HASH160
                          04e2699cec5f44280540fb752c7660aa3ba857cc
                          OP_EQUALVERIFY OP_CHECKSIG
                        hex: 76a91404e2699cec5f44280540fb752c7660aa3ba857cc88ac
                        reqSigs: 1
                        type: pubkeyhash
                        addresses:
                          - t1JKRwXGfKTGfPV1z48rvoLyabk31z3xwHa
                  vJoinSplit: []
                  valueBalance: 0
                  valueBalanceZat: 0
                  vShieldedSpend: []
                  vShieldedOutput: []
    get:
      tags:
        - Daemon
      summary: Decoded info of the hex-encoded transaction
      description: >-
        Return a JSON object representing the serialized, hex-encoded
        transaction. **Public**
      operationId: decodeRawTransaction
      security: []
      parameters:
        - in: query
          name: hexstring
          required: true
          schema:
            type: string
          description: Hex-encoded transaction
          example: >-
            0400008085202f89019f36a42d171392adcfba8686bef8efb6aa9645dd4044cde753864ed54fb025420000000000feffffff0180608d9e020000001976a91404e2699cec5f44280540fb752c7660aa3ba857cc88ac01000000fb0809000000000000000000000000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/decoderawtransaction'
              example:
                status: success
                data:
                  txid: >-
                    03c228785451de39ce396c85168c979a439dcb2037f92d0a57de81e6b1c9f3a4
                  version: 4
                  overwintered: true
                  versiongroupid: 892f2085
                  locktime: 1
                  expiryheight: 592123
                  vin:
                    - txid: >-
                        4225b04fd54e8653e7cd4440dd4596aab6eff8be8686bacfad9213172da4369f
                      vout: 0
                      scriptSig:
                        asm: ''
                        hex: ''
                      sequence: 4294967295
                  vout:
                    - value: 112.5001
                      valueZat: 11250010000
                      valueSat: 11250010000
                      'n': 0
                      scriptPubKey:
                        asm: >-
                          OP_DUP OP_HASH160
                          04e2699cec5f44280540fb752c7660aa3ba857cc
                          OP_EQUALVERIFY OP_CHECKSIG
                        hex: 76a91404e2699cec5f44280540fb752c7660aa3ba857cc88ac
                        reqSigs: 1
                        type: pubkeyhash
                        addresses:
                          - t1JKRwXGfKTGfPV1z48rvoLyabk31z3xwHa
                  vJoinSplit: []
                  valueBalance: 0
                  valueBalanceZat: 0
                  vShieldedSpend: []
                  vShieldedOutput: []
  /daemon/decodescript:
    post:
      tags:
        - Daemon
      summary: Decode hex script
      description: Decode a hex-encoded script. **Public**
      operationId: decodeScriptPost
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                hex:
                  type: string
                  description: Hex-encoded transaction
            example:
              hex: 76a91404e2699cec5f44280540fb752c7660aa3ba857cc88ac
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/decodescript'
              example:
                status: success
                data:
                  asm: >-
                    OP_DUP OP_HASH160 04e2699cec5f44280540fb752c7660aa3ba857cc
                    OP_EQUALVERIFY OP_CHECKSIG
                  reqSigs: 1
                  type: pubkeyhash
                  addresses:
                    - t1JKRwXGfKTGfPV1z48rvoLyabk31z3xwHa
                  p2sh: t3U9WHvndqz58mHBX168iveW5E4xMdeBkWw
    get:
      tags:
        - Daemon
      summary: Decode hex script
      description: Decode a hex-encoded script. **Public**
      operationId: decodeScript
      security: []
      parameters:
        - in: query
          name: hex
          required: true
          schema:
            type: string
          description: Hex-encoded transaction
          example: 76a91404e2699cec5f44280540fb752c7660aa3ba857cc88ac
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/decodescript'
              example:
                status: success
                data:
                  asm: >-
                    OP_DUP OP_HASH160 04e2699cec5f44280540fb752c7660aa3ba857cc
                    OP_EQUALVERIFY OP_CHECKSIG
                  reqSigs: 1
                  type: pubkeyhash
                  addresses:
                    - t1JKRwXGfKTGfPV1z48rvoLyabk31z3xwHa
                  p2sh: t3U9WHvndqz58mHBX168iveW5E4xMdeBkWw
  /daemon/getrawtransaction:
    get:
      tags:
        - Daemon
      summary: Get raw transaction data
      description: >-
        Gets raw transaction data from the txid, if verbose=0 then only hex data
        of transaction is shown, if verbose=1 then it will return with object of
        info of txid. **Public**
      operationId: getRawTransaction
      security: []
      parameters:
        - in: query
          name: txid
          required: true
          schema:
            type: string
          description: Txid to get raw tx data from
          example: 1ed830027683e98c5670981ee983860485fce5132f30d9b6e8e248789c52c55d
        - in: query
          name: verbose
          schema:
            default: 0
            type: number
          description: >-
            If verbose is not set or at 0 only hex-encoded data for the txid
            will return but if set at 1 it will return an object with info of
            the txid.
          example: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      hex:
                        type: string
                        description: 'The serialized, hex-encoded data for ''txid'''
                      txid:
                        type: string
                        description: The transaction id (same as provided)
                      version:
                        type: number
                        description: The version
                      overwintered:
                        type: boolean
                        description: The Overwintered flag
                      versiongroupid:
                        type: string
                        description: The version group id
                      locktime:
                        type: number
                        description: The lock time
                      expiryheight:
                        type: number
                        description: Last valid block height for mining transaction
                      vin:
                        type: array
                        items:
                          type: object
                          properties:
                            coinbase:
                              type: string
                              description: Coinbase hash
                            sequence:
                              type: number
                              description: The script sequence number
                      vout:
                        $ref: '#/components/schemas/vout'
                      vJoinSplit:
                        $ref: '#/components/schemas/joinsplit'
                      valueBalance:
                        type: number
                        description: The balance value of FLUX
                      valueBalanceZat:
                        type: integer
                        description: The balance value of FLUX
                      vShieldedSpend:
                        $ref: '#/components/schemas/shieldedspend'
                      vShieldedOutput:
                        $ref: '#/components/schemas/shieldedoutput'
                      bindingSig:
                        type: string
                        description: Binding signature
                      blockhash:
                        type: string
                        description: The block hash
                      height:
                        type: integer
                        description: Block height
                      confirmations:
                        type: integer
                        description: The confirmations
                      time:
                        type: integer
                        description: >-
                          The transaction time in seconds since epoch (Jan 1
                          1970 GMT)
                      blocktime:
                        type: integer
                        description: The block time in seconds since epoch (Jan 1 1970 GMT)
              example:
                status: success
                data:
                  hex: >-
                    0400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff2003f2fa0800324d696e6572732068747470733a2f2f326d696e6572732e636f6dffffffff0490878d9e020000001976a91404e2699cec5f44280540fb752c7660aa3ba857cc88aca0118721000000001976a914a6886f088ddd5aa3d6027b6d826f912a7ba1c6b788ac601de137000000001976a9145227c99503eae5f10a7373a2b0f385c5cc01459a88ac80461c86000000001976a914c0cf057a7735c07aafb9b3d1ff158a775dffa82e88ac00000000000000000000000000000000000000
                  txid: >-
                    1ed830027683e98c5670981ee983860485fce5132f30d9b6e8e248789c52c55d
                  version: 4
                  overwintered: true
                  versiongroupid: 892f2085
                  locktime: 0
                  expiryheight: 0
                  vin:
                    - coinbase: >-
                        03f2fa0800324d696e6572732068747470733a2f2f326d696e6572732e636f6d
                      sequence: 4294967295
                  vout:
                    - value: 112.5001
                      valueZat: 11250010000
                      valueSat: 11250010000
                      'n': 0
                      scriptPubKey:
                        asm: >-
                          OP_DUP OP_HASH160
                          04e2699cec5f44280540fb752c7660aa3ba857cc
                          OP_EQUALVERIFY OP_CHECKSIG
                        hex: 76a91404e2699cec5f44280540fb752c7660aa3ba857cc88ac
                        reqSigs: 1
                        type: pubkeyhash
                        addresses:
                          - t1JKRwXGfKTGfPV1z48rvoLyabk31z3xwHa
                    - value: 5.625
                      valueZat: 562500000
                      valueSat: 562500000
                      'n': 1
                      scriptPubKey:
                        asm: >-
                          OP_DUP OP_HASH160
                          a6886f088ddd5aa3d6027b6d826f912a7ba1c6b7
                          OP_EQUALVERIFY OP_CHECKSIG
                        hex: 76a914a6886f088ddd5aa3d6027b6d826f912a7ba1c6b788ac
                        reqSigs: 1
                        type: pubkeyhash
                        addresses:
                          - t1Z49cm5Wi5RaojyLopqCpjJpK18RXM1asy
                    - value: 9.375
                      valueZat: 937500000
                      valueSat: 937500000
                      'n': 2
                      scriptPubKey:
                        asm: >-
                          OP_DUP OP_HASH160
                          5227c99503eae5f10a7373a2b0f385c5cc01459a
                          OP_EQUALVERIFY OP_CHECKSIG
                        hex: 76a914c0cf057a7735c07aafb9b3d1ff158a775dffa82e88ac
                        reqSigs: 1
                        type: pubkeyhash
                        addresses:
                          - t1RN15YYt5vZqUoU3PGNCtnY1eDKRUs3pkE
                    - value: 22.5
                      valueZat: 2250000000
                      valueSat: 2250000000
                      'n': 3
                      scriptPubKey:
                        asm: >-
                          OP_DUP OP_HASH160
                          c0cf057a7735c07aafb9b3d1ff158a775dffa82e
                          OP_EQUALVERIFY OP_CHECKSIG
                        hex: 76a914c0cf057a7735c07aafb9b3d1ff158a775dffa82e88ac
                        reqSigs: 1
                        type: pubkeyhash
                        addresses:
                          - t1bT5kGPGLzkwkGxVtC96Toxv3AEm86AbAF
                  vJoinSplit: []
                  valueBalance: 0
                  valueBalanceZat: 0
                  vShieldedSpend: []
                  vShieldedOutput: []
                  blockhash: >-
                    0000008ac60c223e8f7d7ea458264ec308135bde7515ee1440a824ea76610b2d
                  height: 588530
                  confirmations: 403
                  time: 1588282383
                  blocktime: 1588282383
  /daemon/sendrawtransaction:
    post:
      tags:
        - Daemon
      summary: Send raw transaction
      description: >-
        Submits raw transaction (serialized, hex-encoded) to local node and
        network. Also see createrawtransaction and decoderawtransaction. FluxOS
        offers no signing call (a fluxnode has no wallet); sign the transaction
        before sending it. **Public**
      operationId: sendRawTransactionPost
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                hexstring:
                  type: string
                  description: Hex-encoded transaction
                allowhighfees:
                  type: boolean
                  default: false
                  description: Allow high fees (optional)
            example:
              hexstring: >-
                0400008085202f8901ab719872dfea1b4f594049722a92efafa4695322d2c08654aafe98c654606636000000006b483045022100e5f02014419280a5c1ed1f94513e8e2bee83f6341863b304fe093dea897f4aa20220022a6e6004dbf1305197f4053bd9dd59e21abd23a31d0188d079eb72cab84e990121036b6a136ce869a0b400548a9126f06d96181ee974ff1c7f5a5e54e39b7f66be05ffffffff0140420f00000000001976a9142e5db3157a9783c6208019323f2c3a02610826a988ac00000000a60a09000000000000000000000000
              allowhighfees: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: The transaction hash in hex
              example:
                status: success
                data: >-
                  381bfe56a049208ff90356153f024395b7a74b5ec470d639dd7e6ffa4487b2fe
    get:
      tags:
        - Daemon
      summary: Send raw transaction
      description: >-
        Submits raw transaction (serialized, hex-encoded) to local node and
        network. Also see createrawtransaction and decoderawtransaction. FluxOS
        offers no signing call (a fluxnode has no wallet); sign the transaction
        before sending it. **Public**
      operationId: sendRawTransaction
      security: []
      parameters:
        - in: query
          name: hexstring
          required: true
          schema:
            type: string
          description: The hex string of the raw transaction
          example: >-
            0400008085202f8901ab719872dfea1b4f594049722a92efafa4695322d2c08654aafe98c654606636000000006b483045022100e5f02014419280a5c1ed1f94513e8e2bee83f6341863b304fe093dea897f4aa20220022a6e6004dbf1305197f4053bd9dd59e21abd23a31d0188d079eb72cab84e990121036b6a136ce869a0b400548a9126f06d96181ee974ff1c7f5a5e54e39b7f66be05ffffffff0140420f00000000001976a9142e5db3157a9783c6208019323f2c3a02610826a988ac00000000a60a09000000000000000000000000
        - in: query
          name: allowhighfees
          schema:
            default: false
            type: boolean
            enum:
              - true
              - false
          description: |
            Allow high fees.
            - `hexstring`=`<Hex string of raw tx>`&`allowhighfees`=`true`
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: The transaction hash in hex
              example:
                status: success
                data: >-
                  381bfe56a049208ff90356153f024395b7a74b5ec470d639dd7e6ffa4487b2fe
  /daemon/createmultisig:
    post:
      tags:
        - Daemon
      summary: Create multi-sig address
      description: >-
        Creates a multi-signature address with n signature of n keys required.
        **Public**
      operationId: createMultiSigPost
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                'n':
                  type: integer
                  description: >-
                    The number of required signatures out of the n keys or
                    addresses. Followed by Flux addresses in array of strings.
                keys:
                  type: array
                  description: >-
                    Array of keys which are Flux addresses or hex-encoded
                    public keys
                  items:
                    type: string
                    description: Flux address or hex-encoded public key
            example:
              'n': 2
              keys:
                - t1XcXfRFSnSeYmf2mbsMHzHbV8Qo5Zhk817
                - t1RAxsCaeeqB2XbZqvYU87uTMo9K2RtcA9z
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/createmultisig'
              example:
                status: success
                data:
                  address: t3Sia7BaQ6cYYxj31PJWfxhwZwZozNzk9N7
                  redeemScript: >-
                    52210353b1620689dc80w0d9b634616ec8566f80e22fec5edd1c8edf64a8a07babc41f2103450768e972919f7c82ca85d904daf1d3d5beabd25230aca4f363aecfa912457895cd
    get:
      tags:
        - Daemon
      summary: Create multi-sig address
      description: >-
        Creates a multi-signature address with n signature of n keys required.
        **Public**
      operationId: createMultiSig
      security: []
      parameters:
        - in: query
          name: 'n'
          required: true
          schema:
            type: integer
          description: >-
            The number of required signatures out of the n keys or addresses.
            Followed by Flux addresses in array of strings.
          example: 2
        - in: query
          name: keys
          required: true
          description: >
            A json array of keys which are Flux addresses or hex-encoded
            public keys.


            Example:

            -
            `["t1XcXfRFSnSeYmf2mbsMHzHbV8Qo5Zhk817","t1RAxsCaeeqB2XbZqvYU87uTMo9K2RtcA9z"]`
          schema:
            type: string
          example: '["t1XcXfRFSnSeYmf2mbsMHzHbV8Qo5Zhk817","t1RAxsCaeeqB2XbZqvYU87uTMo9K2RtcA9z"]'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/createmultisig'
              example:
                status: success
                data:
                  address: t3Sia7BaQ6cYYxj31PJWfxhwZwZozNzk9N7
                  redeemScript: >-
                    52210353b1620689dc80w0d9b634616ec8566f80e22fec5edd1c8edf64a8a07babc41f2103450768e972919f7c82ca85d904daf1d3d5beabd25230aca4f363aecfa912457895cd
  /daemon/estimatefee:
    get:
      tags:
        - Daemon
      summary: Estimate fee nblocks
      description: >-
        Estimates the approximate fee per kilobyte needed for a transaction to
        begin confirmation within nblocks blocks. **Public**
      operationId: estimateFee
      security: []
      parameters:
        - in: query
          name: nblocks
          required: true
          schema:
            type: integer
          description: Number of nblocks
          example: 5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: integer
                    description: >-
                      Estimated fee-per-kilobyte -1.0 is returned if not enough
                      transactions and blocks have been observed to make an
                      estimate.
              example:
                status: success
                data: -1
  /daemon/estimatepriority:
    get:
      tags:
        - Daemon
      summary: Estimate priority nblocks
      description: >-
        Estimates the approximate priority a zero-fee transaction needs to begin
        confirmation within nblocks blocks. **Public**
      operationId: estimatePriority
      security: []
      parameters:
        - in: query
          name: nblocks
          required: true
          schema:
            type: integer
          description: Number of nblocks
          example: 5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: integer
                    description: >-
                      Estimated fee-per-kilobyte -1.0 is returned if not enough
                      transactions and blocks have been observed to make an
                      estimate.
              example:
                status: success
                data: 0
  /daemon/validateaddress:
    get:
      tags:
        - Daemon
      summary: Info of the Flux address
      description: >-
        Return information about the given Flux address.


        The `ismine` and `iswatchonly` fields are **redacted for unauthenticated
        callers** — they describe this node's wallet, so a node-operator
        `zelidauth` header is required to receive them. **Public**
      operationId: validateAddress
      security: []
      parameters:
        - in: query
          name: fluxaddress
          required: true
          schema:
            type: string
          description: Flux address to validate
          example: t1N6mLX2A64QsyuLbYkfPZSrkLF86hxuuFe
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      isvalid:
                        type: boolean
                        description: >-
                          If the address is valid or not. If not, this is the
                          only property returned.
                      address:
                        type: string
                        description: The Flux address validated
                      scriptPubKey:
                        type: string
                        description: The hex encoded scriptPubKey generated by the address
                      ismine:
                        type: boolean
                        description: If the address is yours or not
                      iswatchonly:
                        type: boolean
                        description: If address is watch only
                      isscript:
                        type: boolean
                        description: If the key is a script
                      pubkey:
                        type: string
                        description: The hex value of the raw public key
                      iscompressed:
                        type: boolean
                        description: If the address is compressed
                      account:
                        type: string
                        description: >-
                          DEPRECATED. The account associated with the address,
                          "" is the default account
              example:
                status: success
                data:
                  isvalid: true
                  address: t1N6mLX2A64QsyuLbYkfPZSrkLF86hxuuFe
                  scriptPubKey: 76a9142e5db3157a9783c6208019323f2c3a02610826a988ac
                  ismine: true
                  iswatchonly: false
                  isscript: false
                  pubkey: >-
                    036b6a136ce869a0b400548a9126f06d96181ee974ff1c7f5a5e54e39b7f66be05
                  iscompressed: true
                  account: ''
  /daemon/verifymessage:
    post:
      tags:
        - Daemon
      summary: Verify a message
      description: Verify a signed message. **Public**
      operationId: verifyMessagePost
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                fluxaddress:
                  type: string
                  description: The Flux address to use for the signature
                signature:
                  type: string
                  description: The signature provided by the signer in base 64 encoding
                message:
                  type: string
                  description: The message that was signed
            example:
              fluxaddress: t1N6mLX2A64QsyuLbYkfPZSrkLF86hxuuFe
              signature: >-
                H5j8AoJ+8VaEEJGgw846hSPQoq42X9yiLwn/Nab1pASBFcw8rj5k8J9xpKr1VzepMEOF2ProYxVsQ9i7xalH4Sk=
              message: helloworld
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: boolean
                    description: If the signature is verified or not.
              example:
                status: success
                data: true
    get:
      tags:
        - Daemon
      summary: Verify a message
      description: Verify a signed message. **Public**
      operationId: verifyMessage
      security: []
      parameters:
        - in: query
          name: fluxaddress
          required: true
          schema:
            type: string
          description: The Flux address to use for the signature
          example: t1N6mLX2A64QsyuLbYkfPZSrkLF86hxuuFe
        - in: query
          name: signature
          required: true
          schema:
            type: string
          description: The signature provided by the signer in base 64 encoding
          example: >-
            H5j8AoJ+8VaEEJGgw846hSPQoq42X9yiLwn/Nab1pASBFcw8rj5k8J9xpKr1VzepMEOF2ProYxVsQ9i7xalH4Sk=
        - in: query
          name: message
          required: true
          schema:
            type: string
          description: The message that was signed
          example: helloworld
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: boolean
                    description: If the signature is verified or not.
              example:
                status: success
                data: true
  /daemon/zvalidateaddress:
    get:
      tags:
        - Daemon
      summary: Information about given z address
      description: Return information about the given z address. **Public**
      operationId: zValidateAddress
      security: []
      parameters:
        - in: query
          name: zaddr
          required: true
          schema:
            type: string
          description: The z address to validate
          example: >-
            za102nkanf5xu6asasvydwp3zlcuure23jqxxz0zqh9catfvc9cu0dfcvl35tz3qkf2q2cxc47g4mk
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      isvalid:
                        type: boolean
                        description: >-
                          If the address is valid or not. If not, this is the
                          only property returned.
                      address:
                        type: string
                        description: The z address validated
                      type:
                        type: string
                        description: Sprout or Sapling
                      diversifier:
                        type: string
                        description: 'The hex value of the diversifier, d'
                      diversifiedtransmissionkey:
                        type: string
                        description: The hex value of pk_d
                      ismine:
                        type: boolean
                        description: If the address is yours or not
              example:
                status: success
                data:
                  isvalid: true
                  address: >-
                    za102nkanf5xu6asasvydwp3zlcuure23jqxxz0zqh9catfvc9cu0dfcvl35tz3qkf2q2cxc47g4mk
                  type: sapling
                  diversifier: 7aa76ecd343735d8760c23
                  diversifiedtransmissionkey: >-
                    6cb0022a5910c5a2f1339cdae3b8609656c7e502f1843140469507e7f88b185c
                  ismine: true
  /daemon/getbenchmarks:
    get:
      tags:
        - Daemon
      summary: Benchmark results
      description: Return most recent benchmark results. **Public**
      operationId: getBenchmarks
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/getbenchmarks'
              example:
                status: success
                data:
                  ipaddress: 185.220.177.169
                  architecture: amd64
                  armboard: ''
                  status: NIMBUS
                  time: 1692874695
                  real_cores: 10
                  cores: 10
                  ram: 31
                  ssd: 1024
                  hdd: 0
                  ddwrite: 1001.733828125
                  totalstorage: 1024
                  disksinfo:
                    - disk: vda
                      size: 1024
                      writespeed: 1001.733828125
                  eps: 1012.08
                  ping: 7.226
                  download_speed: 809.3055686875
                  upload_speed: 310.0325255625
                  bench_version: 1.0.20
                  speed_version: 1.2.0
                  thunder: false
                  error: ''
  /daemon/getbenchstatus:
    get:
      tags:
        - Daemon
      summary: Bench status
      description: >-
        This will return the status of the node, what fluxbenchd determined the
        tier the server could pass for, and if Flux backend is connected. If
        any one of these return a negative result the FluxNode will fail to
        confirm. **Public**
      operationId: getBenchStatus
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/benchstatus'
              example:
                status: success
                data:
                  status: online
                  benchmarking: CUMULUS
  /daemon/getblockhashes:
    get:
      tags:
        - Daemon
      summary: Get block hashes
      description: Returns array of block hashes for given height range. **Public**
      operationId: getBlockHashes
      security: []
      parameters:
        - name: high
          in: query
          required: true
          schema:
            type: integer
          description: Ending block height
        - name: low
          in: query
          required: true
          schema:
            type: integer
          description: Starting block height
        - name: noOrphans
          in: query
          required: false
          schema:
            type: boolean
          description: Exclude orphan blocks. Note the camel-case spelling — FluxOS reads the `noOrphans` query parameter; the lower-case path segment of the route is not read.
          example: true
        - name: logicalTimes
          in: query
          required: false
          schema:
            type: boolean
          description: Include logical times. Note the camel-case spelling — FluxOS reads the `logicalTimes` query parameter; the lower-case path segment of the route is not read.
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: string
                      description: Block hash
              example:
                status: success
                data:
                  - '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'
                  - '00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048'
    post:
      tags:
        - Daemon
      summary: Get block hashes (POST)
      description: Returns array of block hashes for given height range. **Public**
      operationId: getBlockHashesPost
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              required:
                - high
                - low
              properties:
                high:
                  type: integer
                  description: Ending block height
                low:
                  type: integer
                  description: Starting block height
                options:
                  type: object
                  description: Passed to fluxd unchanged as the third argument
                  properties:
                    noOrphans:
                      type: boolean
                      description: Exclude orphan blocks
                    logicalTimes:
                      type: boolean
                      description: Include logical times
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: string
  /daemon/getaddresstxids:
    get:
      tags:
        - Daemon
      summary: Get address transaction IDs
      description: Get all transaction IDs for a specific address. **Public**
      operationId: getSingleAddresssTxids
      security: []
      parameters:
        - name: address
          in: query
          required: true
          schema:
            type: string
          description: Flux address to query
        - name: start
          in: query
          required: false
          schema:
            type: integer
          description: Starting block height
        - name: end
          in: query
          required: false
          schema:
            type: integer
          description: Ending block height
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: string
                      description: Transaction ID
    post:
      tags:
        - Daemon
      summary: Get address transaction IDs (POST)
      description: Get all transaction IDs for multiple addresses. **Public**
      operationId: getAddressTxids
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                addresses:
                  type: array
                  items:
                    type: string
                  description: Array of Flux addresses
                start:
                  type: integer
                  description: Starting block height
                end:
                  type: integer
                  description: Ending block height
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: string
  /daemon/getaddressbalance:
    get:
      tags:
        - Daemon
      summary: Get address balance
      description: Get balance for a specific address. **Public**
      operationId: getSingleAddressBalance
      security: []
      parameters:
        - name: address
          in: query
          required: true
          schema:
            type: string
          description: Flux address to query
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      balance:
                        type: number
                        description: Address balance in satoshis
                      received:
                        type: number
                        description: Total received by address
    post:
      tags:
        - Daemon
      summary: Get address balance (POST)
      description: Get balance for multiple addresses. **Public**
      operationId: getAddressBalance
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                addresses:
                  type: array
                  items:
                    type: string
                  description: Array of Flux addresses
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
  /daemon/getaddressdeltas:
    get:
      tags:
        - Daemon
      summary: Get address deltas
      description: Get balance changes (deltas) for a specific address. **Public**
      operationId: getSingleAddressDeltas
      security: []
      parameters:
        - name: address
          in: query
          required: true
          schema:
            type: string
          description: Flux address to query
        - name: start
          in: query
          required: false
          schema:
            type: integer
          description: Starting block height
        - name: end
          in: query
          required: false
          schema:
            type: integer
          description: Ending block height
        - name: chaininfo
          in: query
          required: false
          schema:
            type: boolean
          description: Include chain information
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        satoshis:
                          type: integer
                          description: Amount in satoshis
                        txid:
                          type: string
                          description: Transaction ID
                        index:
                          type: integer
                          description: Output index
                        blockindex:
                          type: integer
                          description: Block index
                        height:
                          type: integer
                          description: Block height
    post:
      tags:
        - Daemon
      summary: Get address deltas (POST)
      description: Get balance changes for multiple addresses. **Public**
      operationId: getAddressDeltas
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                addresses:
                  type: array
                  items:
                    type: string
                start:
                  type: integer
                end:
                  type: integer
                chaininfo:
                  type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
  /daemon/getaddressutxos:
    get:
      tags:
        - Daemon
      summary: Get address UTXOs
      description: Get unspent transaction outputs for a specific address. **Public**
      operationId: getSingleAddressUtxos
      security: []
      parameters:
        - name: address
          in: query
          required: true
          schema:
            type: string
          description: Flux address to query
        - name: chaininfo
          in: query
          required: false
          schema:
            type: boolean
          description: >-
            Include chain information. Forwarded to fluxd as given, without
            conversion to a boolean; the POST form with `chainInfo: true` sends a
            real boolean.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        address:
                          type: string
                          description: Address
                        txid:
                          type: string
                          description: Transaction ID
                        outputIndex:
                          type: integer
                          description: Output index
                        script:
                          type: string
                          description: Script hex
                        satoshis:
                          type: integer
                          description: Amount in satoshis
                        height:
                          type: integer
                          description: Block height
    post:
      tags:
        - Daemon
      summary: Get address UTXOs (POST)
      description: Get UTXOs for multiple addresses. **Public**
      operationId: getAddressUtxos
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                addresses:
                  type: array
                  items:
                    type: string
                chainInfo:
                  type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
  /daemon/getaddressmempool:
    get:
      tags:
        - Daemon
      summary: Get address mempool transactions
      description: Get mempool transactions for a specific address. **Public**
      operationId: getSingleAddressMempool
      security: []
      parameters:
        - name: address
          in: query
          required: true
          schema:
            type: string
          description: Flux address to query
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        address:
                          type: string
                        txid:
                          type: string
                        index:
                          type: integer
                        satoshis:
                          type: integer
                        timestamp:
                          type: integer
    post:
      tags:
        - Daemon
      summary: Get address mempool (POST)
      description: Get mempool transactions for multiple addresses. **Public**
      operationId: getAddressMempool
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                addresses:
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
  /daemon/submitblock:
    get:
      tags:
        - Daemon
      summary: Submit block
      description: Submit a block to the network. **User**
      operationId: submitBlock
      security:
        - FluxID: []
      parameters:
        - name: hexdata
          in: query
          required: true
          schema:
            type: string
          description: Block data in hex format
        - name: jsonparametersobject
          in: query
          required: false
          schema:
            type: string
          description: Optional JSON parameters
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Block submission result
    post:
      tags:
        - Daemon
      summary: Submit block (POST)
      description: Submit a block using POST method. **User**
      operationId: submitBlockPost
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                hexdata:
                  type: string
                jsonparametersobject:
                  type: string
              required:
                - hexdata
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
  /daemon/prioritisetransaction:
    get:
      tags:
        - Daemon
      summary: Priortise a transaction
      description: >-
        Accepts the transaction into mined blocks at a higher (or lower)
        priority. **User**
      operationId: prioritiseTransaction
      security:
        - FluxID: []
      parameters:
        - in: query
          name: txid
          required: true
          schema:
            type: string
          description: The transaction id
          example: 22ab3d049154c7d4b0f04b381770c655564facdc896a4f7e97aa5662f57a58c6
        - in: query
          name: prioritydelta
          required: true
          schema:
            type: integer
          description: >-
            The priority to add or subtract. The transaction selection algorithm
            considers the tx as it would have a higher priority. (priority of a
            transaction is calculated: coinage * value_in_satoshis / txsize)
          example: 0
        - in: query
          name: feedelta
          required: true
          schema:
            type: integer
          description: >-
            The fee value (in satoshis) to add (or subtract, if negative). The
            fee is not actually paid, only the algorithm for selecting
            transactions into a block considers the transaction as it would have
            paid a higher (or lower) fee.
          example: 10000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: boolean
                    description: Returns true
              example:
                status: success
                data: true
  /daemon/reindex:
    get:
      tags:
        - Daemon
      summary: Reindex Flux daemon
      description: >-
        Tries to reindex Flux daemon running on the FluxNode the call is run
        against. Flux daemon is firstly stopped and then started with reindex
        flag. **Admin**
      operationId: reindexFlux
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Daemon successfully reindexing
  /daemon/stop:
    get:
      tags:
        - Daemon
      summary: Stop Flux daemon
      description: This will stop the Flux daemon from running. **Admin**
      operationId: stop
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Explanation of status
              example:
                status: success
                data: Stop Flux server
  /daemon/createfluxnodekey:
    get:
      tags:
        - Daemon
      summary: Create fluxnode private key
      description: Create a new fluxnode private key. **Admin**
      operationId: createFluxNodeKey
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Fluxnode private key
              example:
                status: success
                data: 5JwVKe7UH986ncSL2jG9KdUY2AuZUTDAkTsp4TZoGWdD5cLLiFR
  /daemon/listfluxnodeconf:
    get:
      tags:
        - Daemon
      summary: The fluxnode conf file
      description: >-
        View fluxnode conf file in JSON format, this will return empty for most
        unless running a hot wallet. **Admin**
      operationId: listFluxNodeConf
      security:
        - FluxID: []
      parameters:
        - in: query
          name: filter
          required: false
          schema:
            type: string
          description: Filter the configuration entries returned
          example: mynode
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        alias:
                          type: string
                          description: Alias name
                        status:
                          type: string
                          description: Status of fluxnode
                        collateral:
                          type: string
                          description: Collateral txid and output index
                        txhash:
                          type: string
                          description: Transaction id
                        outputIndex:
                          type: integer
                          description: Output index
                        privateKey:
                          type: string
                          description: Fluxnode private key
                        address:
                          type: string
                          description: Ip address of fluxnode server and port
                        ip:
                          type: string
                          description: Ip address of fluxnode server
                        network:
                          type: string
                          description: 'Network type (IPv4, IPv6, onion)'
                        added_height:
                          type: integer
                          description: Block height fluxnode was added to list
                        confirmed_height:
                          type: integer
                          description: Block height fluxnode was confirmed by the network
                        last_confirmed_height:
                          type: integer
                          description: Latest block height network confirmed the fluxnode
                        last_paid_height:
                          type: integer
                          description: Block the fluxnode was last paid
                        tier:
                          type: string
                          description: Tier of fluxnode
                        payment_address:
                          type: string
                          description: Address where rewards are paid
                        activesince:
                          type: integer
                          description: Last paid time in epoch
                        lastpaid:
                          type: integer
                          description: Last paid time in epoch
              example:
                status: success
                data:
                  - alias: zn1
                    status: OFFLINE
                    collateral: >-
                      COutPoint(2bcd3c84c84f87eaa86e4e56834c92927a07f9e18718810b92e0d0324456a67c,
                      0)
                    txhash: >-
                      2bcd3c84c84f87eaa86e4e56834c92927a07f9e18718810b92e0d0324456a67c
                    outputIndex: 0
                    privateKey: 93HaYBVUCYjEMeeH1Y4sBGLALQZE1Yc1K64xiqgX37tGBDQL8Xg
                    address: '127.0.0.2:16125'
                    ip: UNKNOWN
                    network: UNKNOWN
                    added_height: 0
                    confirmed_height: 0
                    last_confirmed_height: 0
                    last_paid_height: 0
                    tier: UNKNOWN
                    payment_address: UNKNOWN
                    activesince: 0
                    lastpaid: 0
  /daemon/getfluxnodeoutputs:
    get:
      tags:
        - Daemon
      summary: Fluxnode transaction outputs
      description: Print all fluxnode transaction outputs. **Admin**
      operationId: getFluxNodeOutputs
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        txhash:
                          type: string
                          description: Output transaction hash
                        outputidx:
                          type: number
                          description: Output index number
              example:
                status: success
                data:
                  - txhash: >-
                      cee4c36d22609004d286bd83bebf1f28feb33dd6e4889c6c400766253942c1af
                    outputidx: 0
  /daemon/startfluxnode:
    get:
      tags:
        - Daemon
      summary: Start FluxNode commmand
      description: >-
        Attempts to start one or more FluxNode. This call will only work if
        running a hot FluxNode which is highly not recommended. It is a control
        wallet function so basically your wallet containing the collateral
        funds. **Admin**
      operationId: startFluxNode
      security:
        - FluxID: []
      parameters:
        - in: query
          name: set
          required: true
          schema:
            type: string
          description: Specify which set of FluxNode(s) to start.
          example: alias
        - in: query
          name: lockwallet
          required: true
          schema:
            type: boolean
            enum:
              - true
              - false
          description: |
            Lock wallet after completion.

            Example:
            - `set`=`<alias>`&`lockwallet`=`false`
        - in: query
          name: alias
          required: false
          schema:
            type: string
          description: FluxNode alias. Required if using 'alias' as the set.
          example: Super1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/startfluxnode'
              example:
                status: success
                data:
                  overall: 'Successfully started 0 fluxnodes, failed to start 1, total'
                  detail:
                    - result: failed
                      error: could not find alias in config. Verify with list-conf.
  /daemon/startdeterministicfluxnode:
    get:
      tags:
        - Daemon
      summary: Start fluxnode command
      description: >-
        Attempts to start one fluxnode. Same as the `/daemon/startfluxnode` call
        this call will only work if running a hot FluxNode which is highly not
        recommended. It is a control wallet function so basically your wallet
        containing the collateral funds.  **Admin**
      operationId: startDeterministicFluxNode
      security:
        - FluxID: []
      parameters:
        - in: query
          name: alias
          required: true
          schema:
            type: string
          description: Node name or alias.
          example: Basic1
        - in: query
          name: lockwallet
          required: false
          schema:
            type: boolean
            default: false
            enum:
              - true
              - false
          description: |
            Lock wallet after completion.

            Example:
            - `alias`=`<alias`&`lockwallet`=`false`
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/startfluxnode'
              example:
                status: success
                data:
                  overall: 'Successfully started 0 fluxnodes, failed to start 1, total'
                  detail:
                    - alias: Basic1
                      result: failed
                      error: could not find alias in config. Verify with list-conf.
  /daemon/verifychain:
    get:
      tags:
        - Daemon
      summary: Verify blockchain data
      description: Verifies blockchain database. **Admin**
      operationId: verifyChain
      security:
        - FluxID: []
      parameters:
        - in: query
          name: checklevel
          schema:
            type: integer
            default: 3
            enum:
              - 0
              - 1
              - 2
              - 3
              - 4
          description: |
            How thorough the block verification is.

            Example:
            - `checklevel`=`1`
        - in: query
          name: numblocks
          schema:
            type: integer
            default: 288
          description: The number of blocks to check
          example: 200
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: boolean
                    description: Verified or not
              example:
                status: success
                data: true
  /daemon/addnode:
    get:
      tags:
        - Daemon
      summary: 'Add, remove, or try to connect a node'
      description: >-
        Attempts to add or remove a node from the addnode list. Or try a
        connection to a node once. **Admin**
      operationId: addNode
      security:
        - FluxID: []
      parameters:
        - in: query
          name: node
          required: true
          schema:
            type: string
          description: 'The node''s ip:port (see `/daemon/getpeerinfo` for nodes)'
          example: '188.239.61.210:16125'
        - in: query
          name: command
          required: true
          schema:
            type: string
            enum:
              - add
              - remove
              - onetry
          description: |
            Use 'add' to add a node to the list, 'remove' to remove a node from
            the list, 'onetry' to try a connection to the node once.

            Example:
            - `node`=`<ip:port>`&`command`=`add`
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/nullmessage'
              example:
                status: success
                data: null
  /daemon/clearbanned:
    get:
      tags:
        - Daemon
      summary: Clear banned IP's
      description: Clear all banned IP's. **Admin**
      operationId: clearBanned
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/nullmessage'
              example:
                status: success
                data: null
  /daemon/disconnectnode:
    get:
      tags:
        - Daemon
      summary: Disconnect a node
      description: Immediately disconnects from the specified node. **Admin**
      operationId: disconnectNode
      security:
        - FluxID: []
      parameters:
        - in: query
          name: node
          required: true
          schema:
            type: string
          description: 'The node''s ip:port'
          example: '188.239.61.210:16125'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/nullmessage'
              example:
                status: success
                data: null
  /daemon/getaddednodeinfo:
    get:
      tags:
        - Daemon
      summary: Info of added node/nodes
      description: >-
        Returns information about the given added node, or all added nodes(note
        that onetry addnodes are not listed here). If dns is false, only a list
        of added nodes will be provided, otherwise connected information will
        also be available. **Admin**
      operationId: getAddedNodeInfo
      security:
        - FluxID: []
      parameters:
        - in: query
          name: dns
          required: true
          schema:
            type: boolean
            enum:
              - true
              - false
          description: >-
            If false, only a list of added nodes will be provided, otherwise
            connected information will also be available.
        - in: query
          name: node
          schema:
            type: string
          description: 'The node ip:port'
          example: '188.239.61.210:16125'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        addednode:
                          type: string
                          description: The node ip address
                        connected:
                          type: boolean
                          description: If connected
                        addresses:
                          type: array
                          items:
                            type: object
                            properties:
                              address:
                                type: string
                                description: The Flux server host and port
                              connected:
                                type: string
                                description: 'Connection, inbound or outbound'
              example:
                status: success
                data:
                  - addednode: explorer.runonflux.io
                    connected: true
                    addresses:
                      - address: '159.65.254.184:16125'
                        connected: outbound
                  - addednode: explorer2.runonflux.io
                    connected: true
                    addresses:
                      - address: '80.211.207.17:16125'
                        connected: outbound
                  - addednode: explorer.flux.zelcore.io
                    connected: true
                    addresses:
                      - address: '206.189.0.55:16125'
                        connected: outbound
  /daemon/setban:
    get:
      tags:
        - Daemon
      summary: Add or remove a IP from banned list
      description: Attempts add or remove a IP/Subnet from the banned list. **Admin**
      operationId: setBan
      security:
        - FluxID: []
      parameters:
        - in: query
          name: ip
          required: true
          schema:
            type: string
          description: >-
            The IP/Subnet (see getpeerinfo for nodes ip) with a optional netmask
            (default is /32 = single ip)
          example: 188.239.61.210
        - in: query
          name: command
          required: true
          schema:
            type: string
            enum:
              - add
              - remove
          description: >-
            Use 'add' to add a IP/Subnet to the list, 'remove' to remove a
            IP/Subnet from the list
        - in: query
          name: bantime
          schema:
            type: integer
            default: 86400
          description: >-
            Time in seconds how long (or until when if absolute is set) the ip
            is banned (0 or empty means using the default time of 24h which can
            also be overwritten by the -bantime startup argument)
          example: 3500
        - in: query
          name: absolute
          schema:
            type: boolean
            enum:
              - false
              - true
          description: >
            If set, the bantime must be a absolute timestamp in seconds since

            epoch (Jan 1 1970 GMT)


            Example:

            -
            `ip`=`<ipaddress>`&`command`=`<add/remove>`&`bantime`=`1590368400`&`absolute`=`true`
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/nullmessage'
              example:
                status: success
                data: null
  /daemon/start:
    get:
      tags:
        - Daemon
      summary: Start Flux daemon
      description: >-
        Tries to start Flux daemon running on the FluxNode the call is run
        against without any extra parameters. **AdminAndFluxTeam**
      operationId: startdaemonB
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Daemon successfully started
  /daemon/restart:
    get:
      tags:
        - Daemon
      summary: Restart Flux daemon
      description: >-
        Tries to restart Flux daemon running on the FluxNode the call is run
        against. Flux daemon is firstly stopped and then started without any
        extra parameters. **AdminAndFluxTeam**
      operationId: restartdaemonB
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Daemon successfully restarted
  /daemon/ping:
    get:
      tags:
        - Daemon
      summary: Ping request to measure ping time
      description: >-
        Requests that a ping be sent to all other nodes, to measure ping time.
        **AdminAndFluxTeam**
      operationId: ping
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/nullmessage'
              example:
                status: success
                data: null
  /daemon/startbenchmark:
    get:
      tags:
        - Daemon
      summary: Start Benchmark daemon
      description: Start Benchmark daemon. **AdminAndFluxTeam**
      operationId: daemonstartbenchmark
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Explanation of status
              example:
                status: success
                data: Starting process
  /daemon/stopbenchmark:
    get:
      tags:
        - Daemon
      summary: Stop Benchmark daemon
      description: Stop Benchmark daemon. **AdminAndFluxTeam**
      operationId: stopbenchmark
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Explanation of status
              example:
                status: success
                data: Stopping process
  #Benchmark
  /benchmark/getstatus:
    get:
      tags:
        - Benchmark
      summary: Fluxbench status
      description: >-
        This will return the status of the node, what FluxBenchd determined the
        tier the server could pass for, and if Flux backend is connected. If
        any one of these return a negative result the FluxNode will fail to
        confirm. **Public**
      operationId: getStatus
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/benchstatus'
              example:
                status: success
                data:
                  status: online
                  benchmarking: NIMBUS
  /benchmark/help:
    get:
      tags:
        - Benchmark
      summary: Fluxbench calls
      description: This will return with a list of calls for FluxBench. **Public**
      operationId: benchmarkHelp
      security: []
      parameters:
        - in: query
          name: command
          required: false
          schema:
            type: string
          description: Show help for this benchmark command only; the full command list when omitted
          example: getstatus
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: List of calls
              example:
                status: success
                data: |-
                  == Benchmarks ==
                  getstatus (full_check)
                  restartnodebenchmarks
                  signfluxnodetransaction "hexstring"
                  startmultiportbench

                  == Control ==
                  help ( "command" )
                  stop

                  == Fluxnode ==
                  getbenchmarks
                  getinfo
  /benchmark/getbenchmarks:
    get:
      tags:
        - Benchmark
      summary: Benchmark results
      description: Return most recent benchmark results. **Public**
      operationId: getBenchmarksBenchmark
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/getbenchmarks'
              example:
                status: success
                data:
                  ipaddress: 149.154.176.24
                  architecture: amd64
                  armboard: ''
                  status: STRATUS
                  time: 1692898160
                  real_cores: 8
                  cores: 16
                  ram: 62
                  ssd: 880
                  hdd: 0
                  ddwrite: 830.878984375
                  totalstorage: 880
                  disksinfo:
                    - disk: sda
                      size: 880
                      writespeed: 830.878984375
                  eps: 3449.12
                  ping: 0.733
                  download_speed: 1370.830928
                  upload_speed: 4973.01136
                  bench_version: 1.0.20
                  speed_version: 1.2.0
                  thunder: false
                  error: ''
  /benchmark/getinfo:
    get:
      tags:
        - Benchmark
      summary: Fluxbench status
      description: This will return with the fluxbench status of the fluxnode. **Public**
      operationId: benchmarkGetInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/benchinfo'
              example:
                status: success
                data:
                  version: 3.8.0
                  rpcport: 16224
  /benchmark/restartnodebenchmarks:
    get:
      tags:
        - Benchmark
      summary: Restart FluxBench daemon
      description: >-
        This will restart the FluxBench daemon and start bench process.
        **AdminAndFluxTeam**
      operationId: restartNodeBenchmarks
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Explanation of status
              example:
                status: success
                data: Benchmarks will restart in the next couple minutes
  /benchmark/stop:
    get:
      tags:
        - Benchmark
      summary: Stop fluxbench daemon
      description: This will stop the fluxbench daemon. **Admin**
      operationId: stopbenchmarkaemon
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Explanation of status
              example:
                status: success
                data: Fluxbench server stopping
  /benchmark/signfluxnodetransaction:
    post:
      tags:
        - Benchmark
      summary: Sign FluxNode transaction
      description: Command to get FluxBenchd to sign a FluxNode broadcast. **Admin**
      operationId: signFluxNodeTransactionPost
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                hexstring:
                  type: string
                  description: The hex encoded FluxNode broadcast message
            example:
              hexstring: >-
                0500000004566e906c6df24b00ca710cecbbea166a29b9098456bed212207fea66f433ba4500000000ba33bd5e01182ebd5e010f3131362e3230332e3233372e323530411b27b3e254a9f3248d88039a0f062e0d634e130bd34a9e4a1cb27d7aa6ce975cee251be9af6864a1a4a9e9d5fc2b28a07af8bab36a73f912c59ef844a69fa03f5f411c7f47ba609b2c0eb91268b446b31899ce66f90fa1375aab29692f1b252a53a9883120e10c646292486365608dc806c43e2d49b66afdd150a6a7f60b6b2392a83b
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/signfluxnodetransaction'
              example:
                status: success
                data:
                  status: complete
                  tier: CUMULUS
                  hex: >-
                    0500000004566e906c6df24b00ca710cecbbea166a29b9098456bed212207fea66f433ba4500000000ba33bd5e014d3cbd5e010f3131362e3230332e3233372e323530411b27b3e254a9f3248d88039a0f062e0d634e130bd34a9e4a1cb27d7aa6ce975cee251be9af6864a1a4a9e9d5fc2b28a07af8bab36a73f912c59ef844a69fa03f5f411b38e0e02dfece0ba3b7aae0afdcea7c70c9ea28b11317763f12092214086059e74d542cada464f3ee2c655011c53f6f18c0aa484bff8ce36926c6b295eb9287ff
    get:
      tags:
        - Benchmark
      summary: Sign FluxNode transaction
      description: Command to get FluxBenchd to sign a FluxNode broadcast. **Admin**
      operationId: signFluxNodeTransaction
      security:
        - FluxID: []
      parameters:
        - in: query
          name: hexstring
          required: true
          schema:
            type: string
          description: The hex encoded fluxnode broadcast message
          example: >-
            0500000004566e906c6df24b00ca710cecbbea166a29b9098456bed212207fea66f433ba4500000000ba33bd5e01182ebd5e010f3131362e3230332e3233372e323530411b27b3e254a9f3248d88039a0f062e0d634e130bd34a9e4a1cb27d7aa6ce975cee251be9af6864a1a4a9e9d5fc2b28a07af8bab36a73f912c59ef844a69fa03f5f411c7f47ba609b2c0eb91268b446b31899ce66f90fa1375aab29692f1b252a53a9883120e10c646292486365608dc806c43e2d49b66afdd150a6a7f60b6b2392a83b
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/signfluxnodetransaction'
              example:
                status: success
                data:
                  status: complete
                  tier: CUMULUS
                  hex: >-
                    0500000004566e906c6df24b00ca710cecbbea166a29b9098456bed212207fea66f433ba4500000000ba33bd5e014d3cbd5e010f3131362e3230332e3233372e323530411b27b3e254a9f3248d88039a0f062e0d634e130bd34a9e4a1cb27d7aa6ce975cee251be9af6864a1a4a9e9d5fc2b28a07af8bab36a73f912c59ef844a69fa03f5f411b38e0e02dfece0ba3b7aae0afdcea7c70c9ea28b11317763f12092214086059e74d542cada464f3ee2c655011c53f6f18c0aa484bff8ce36926c6b295eb9287ff
  #Syncthing
  /syncthing/system/error:
    post:
      tags:
        - Syncthing
      summary: Set an error message
      description: Post with an error message in the body (plain text) to register a new error. The new error will be displayed on any active GUI clients. **AdminAndFluxTeam**
      operationId: fluxSyncthingSystemErrorPOST
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: string
            example:
              Test error
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Syncthing's answer (empty on success)
              example:
                status: success
                data: ''
  /syncthing/system/upgrade:
    post:
      tags:
        - Syncthing
      summary: Perform an upgrade
      description: Perform an upgrade to the newest released version and restart. Does nothing if there is no newer version than currently running. **AdminAndFluxTeam**
      operationId: fluxSyncthingUpgradePOST
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Syncthing's answer (empty on success)
              example:
                status: success
                data: ''
  /syncthing/config:
    post:
      tags:
        - Syncthing
      summary: Replace the entire Syncthing configuration
      description: >-
        Replaces this node&#39;s whole Syncthing configuration with the object
        sent in `config`. Send the JSON body as `text/plain`: the handler reads
        the raw stream, and with `Content-Type: application/json` the request
        never answers. **AdminAndFluxTeam**
      operationId: fluxSyncthingConfigPOST
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                config:
                  type: object
                  description: The replacement configuration section
            example:
              config:
                version: 37
                folders: []
                devices: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: {}
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /syncthing/config/devices:
    post:
      tags:
        - Syncthing
      summary: Modify the device configuration
      description: >-
        Sends `config` to Syncthing's `/rest/config/devices` (or
        `/rest/config/devices/<id>` when `id` is given) with the verb in
        `method`: `post` (default) adds or replaces the given devices, `put`
        replaces the section, `patch` changes one device, `delete` removes it.
        Send the JSON body as `text/plain`: the handler reads the raw stream,
        and with `Content-Type: application/json` the request never answers.
        **AdminAndFluxTeam**
      operationId: fluxSyncthingConfigDevicesPOST
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: >-
                    Device id; when given the call addresses
                    `/rest/config/devices/<id>` (answers `Invalid ID supplied`
                    for characters Syncthing ids cannot contain)
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: post
                  description: HTTP method used against Syncthing
                config:
                  type: object
                  description: The replacement configuration section
            example:
              config:
                - deviceID: 7IKKJI5-E34NYQT-BCVFJMH-6O5YBNH-ZXRLVCG-7HE6I5Z-V6B5SLM-TNJAFAO
                  name: peer-node
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: {}
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /syncthing/config/folders:
    post:
      tags:
        - Syncthing
      summary: Modify the folder configuration
      description: >-
        Sends `config` to Syncthing's `/rest/config/folders` (or
        `/rest/config/folders/<id>` when `id` is given) with the verb in
        `method`: `post` (default) adds or replaces the given folders, `put`
        replaces the section, `patch` changes one folder, `delete` removes it.
        Send the JSON body as `text/plain`: the handler reads the raw stream,
        and with `Content-Type: application/json` the request never answers.
        **AdminAndFluxTeam**
      operationId: fluxSyncthingConfigFoldersPOST
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                config:
                  description: >-
                    Sent to Syncthing as the request body: one folder object or
                    an array of them for `post`, the whole folder list for `put`,
                    the fields to change for `patch`
                id:
                  type: string
                  description: >-
                    Folder id; when given the call addresses
                    `/rest/config/folders/<id>` (answers `Invalid ID supplied`
                    for characters Syncthing ids cannot contain)
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: post
                  description: HTTP method used against Syncthing
            example:
              config:
                id: new-folder2
                label: test
                filesystemType: basic
                path: /home/flux100/test2
                type: sendreceive
                devices:
                  - deviceID: 7IKKJI5-E34NYQT-BCVFJMH-6O5YBNH-ZXRLVCG-7HE6I5Z-V6B5SLM-TNJAFAO
                    introducedBy: ''
                    encryptionPassword: ''
                rescanIntervalS: 3600
                fsWatcherEnabled: true
                fsWatcherDelayS: 10
                ignorePerms: false
                autoNormalize: true
                minDiskFree:
                  value: 1
                  unit: '%'
                versioning:
                  type: ''
                  params: {}
                  cleanupIntervalS: 3600
                  fsPath: ''
                  fsType: basic
                copiers: 0
                pullerMaxPendingKiB: 0
                hashers: 0
                order: random
                ignoreDelete: false
                scanProgressIntervalS: 0
                pullerPauseS: 0
                maxConflicts: 0
                disableSparseFiles: false
                disableTempIndexes: false
                paused: false
                weakHashThresholdPct: 25
                markerName: .stfolder
                copyOwnershipFromParent: false
                modTimeWindowS: 0
                maxConcurrentWrites: 2
                disableFsync: false
                blockPullOrder: standard
                copyRangeMethod: standard
                caseSensitiveFS: false
                junctionsAsDirs: false
                syncOwnership: true
                sendOwnership: true
                syncXattrs: true
                sendXattrs: true
                xattrFilter:
                  entries: []
                  maxSingleEntrySize: 1024
                  maxTotalSize: 4096
              
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: ""
  /syncthing/config/defaults/folder:
    post:
      tags:
        - Syncthing
      summary: Replace the default folder config
      description: >-
        Replaces the template Syncthing applies to newly created folders. Send
        the JSON body as `text/plain`: the handler reads the raw stream, and
        with `Content-Type: application/json` the request never answers.
        **AdminAndFluxTeam**
      operationId: fluxSyncthingConfigDefaultsFolderPOST
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: put
                  description: >-
                    HTTP method used against Syncthing (`put` replaces the
                    object, `patch` changes only the given fields)
                config:
                  type: object
                  description: The replacement configuration section
            example:
              config:
                type: sendreceive
                rescanIntervalS: 3600
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: {}
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /syncthing/config/defaults/device:
    post:
      tags:
        - Syncthing
      summary: Replace the default device config
      description: >-
        Replaces the template Syncthing applies to newly added devices. Send the
        JSON body as `text/plain`: the handler reads the raw stream, and with
        `Content-Type: application/json` the request never answers.
        **AdminAndFluxTeam**
      operationId: fluxSyncthingConfigDefaultsDevicePOST
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: put
                  description: >-
                    HTTP method used against Syncthing (`put` replaces the
                    object, `patch` changes only the given fields)
                config:
                  type: object
                  description: The replacement configuration section
            example:
              config:
                compression: metadata
                introducer: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: {}
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /syncthing/config/options:
    post:
      tags:
        - Syncthing
      summary: Replace the options config section
      description: >-
        Replaces the Syncthing options configuration section. Send the JSON body
        as `text/plain`: the handler reads the raw stream, and with
        `Content-Type: application/json` the request never answers.
        **AdminAndFluxTeam**
      operationId: fluxSyncthingConfigOptionsPOST
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: put
                  description: >-
                    HTTP method used against Syncthing (`put` replaces the
                    object, `patch` changes only the given fields)
                config:
                  type: object
                  description: The replacement configuration section
            example:
              config:
                globalAnnounceEnabled: true
                relaysEnabled: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: {}
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /syncthing/config/gui:
    post:
      tags:
        - Syncthing
      summary: Replaces the entire gui object in config
      description: Replaces the entire gui object in config. **FluxTeam**
      operationId: fluxSyncthingConfigGuiPost
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: put
                  description: >-
                    HTTP method used against Syncthing (`put` replaces the
                    object, `patch` changes only the given fields)
                config:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    address:
                      type: string
                      example: 127.0.0.1:8384
                    unixSocketPermissions:
                      type: string
                      example: ''
                    user:
                      type: string
                      example: ''
                    password:
                      type: string
                      example: ''
                    authMode:
                      type: string
                      example: static
                    useTLS:
                      type: boolean
                      example: false
                    apiKey:
                      type: string
                      example: bpNaKvaT72C8hfrxgh52g2zmLU7s
                    insecureAdminAccess:
                      type: boolean
                      example: false
                    theme:
                      type: string
                      example: default
                    debugging:
                      type: boolean
                    insecureSkipHostcheck:
                      type: boolean
                    insecureAllowFrameLoading:
                      type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: ""
  /syncthing/config/ldap:
    post:
      tags:
        - Syncthing
      summary: Replaces the entire ldap config object
      description: >-
        Replaces the entire ldap config object. Send the JSON body as
        `text/plain`: the handler reads the raw stream, and with `Content-Type:
        application/json` the request never answers. **AdminAndFluxTeam**
      operationId: fluxSyncthingConfigLdapPost
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: put
                  description: >-
                    HTTP method used against Syncthing (`put` replaces the
                    object, `patch` changes only the given fields)
                config:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    address:
                      type: string
                      example: 127.0.0.1:8384
                    unixSocketPermissions:
                      type: string
                      example: ''
                    user:
                      type: string
                      example: ''
                    password:
                      type: string
                      example: ''
                    authMode:
                      type: string
                      example: static
                    useTLS:
                      type: boolean
                      example: false
                    apiKey:
                      type: string
                      example: bpNaKvaT72C8hfrxgh52g2zmLU7s
                    insecureAdminAccess:
                      type: boolean
                      example: false
                    theme:
                      type: string
                      example: default
                    debugging:
                      type: boolean
                    insecureSkipHostcheck:
                      type: boolean
                    insecureAllowFrameLoading:
                      type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: 
                  address: ''
                  bindDN: ''
                  transport: plain
                  insecureSkipVerify: false
                  searchBaseDN: ''
                  searchFilter: ''
  /syncthing/cluster/pending/devices:
    post:
      tags:
        - Syncthing
      summary: Remove records about a pending remote device which tried to connect
      description: >-
        Remove records about a pending remote device which tried to connect.
        Valid values for the device parameter are those from the corresponding
        GET /rest/cluster/pending/devices endpoint. Send the JSON body as
        `text/plain`: the handler reads the raw stream, and with `Content-Type:
        application/json` the request never answers. **AdminAndFluxTeam**
      operationId: fluxSyncthingPendingDevicesPOST
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: delete
                  description: >-
                    HTTP method used against Syncthing; `delete` (the default)
                    removes the pending record
                device:
                  type: string
            example:
              device: XHZAEFI-RFF7ATI-6LXKNWK-FCSD7FF-3URL6RN-OJQMS5T-EIDFDZX-R6QGYAZ
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: "" 
  /syncthing/cluster/pending/folders:
    post:
      tags:
        - Syncthing
      summary: Remove records about a pending folder announced from a remote device
      description: >-
        Remove records about a pending folder announced from a remote device.
        Valid values for the folde parameters are those from the corresponding
        GET /rest/cluster/pending/folders endpoint. Send the JSON body as
        `text/plain`: the handler reads the raw stream, and with `Content-Type:
        application/json` the request never answers. **AdminAndFluxTeam**
      operationId: fluxSyncthingPendingFoldersPOST
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: delete
                  description: >-
                    HTTP method used against Syncthing; `delete` (the default)
                    removes the pending record
                folder:
                  type: string
            example:
              folder: new-folder2
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: ""     
  /syncthing/folder/versions:
    post:
      tags:
        - Syncthing
      summary: Restore versioned files in a folder
      description: >-
        Restores files from a folder&#39;s version archive. `folder` names the
        folder and `method` selects the HTTP verb Syncthing is asked with
        (`post` by default). Send the JSON body as `text/plain`: the handler
        reads the raw stream, and with `Content-Type: application/json` the
        request never answers. **AdminAndFluxTeam**
      operationId: fluxSyncthingFolderVersionsPOST
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                config:
                  type: object
                  description: The replacement configuration section
                folder:
                  type: string
                  description: Folder id to act on
                method:
                  type: string
                  description: HTTP method to use against Syncthing; `post` by default
            example:
              folder: fluxmycomponent_myapp
              method: post
              config:
                docs/report.csv: '2026-09-01T09:14:00'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: {}
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /syncthing/db/scan:
    post:
      tags:
        - Syncthing
      summary: Request immediate scan
      description: >-
        Request immediate scan. Takes the optional parameters ```folder```
        (folder ID). Send the JSON body as `text/plain`: the handler reads the
        raw stream, and with `Content-Type: application/json` the request never
        answers. **AdminAndFluxTeam**
      operationId: fluxSyncthingDbScan
      security:
        - FluxID: []
      requestBody:
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: post
                  description: >-
                    HTTP method used against Syncthing
                folder:
                  type: string
                  description: folder
                sub:
                  type: string
                  description: Path relative to the folder root to scan
                next:
                  type: integer
                  description: Seconds until the next scheduled scan
            example:
              folder: fluxwp_wordpress1678382606717
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: ""
  /syncthing/db/revert:
    post:
      tags:
        - Syncthing
      summary: Request revert of a receive only folder
      description: >-
        Request revert of a receive only folder. Reverting a folder means to
        undo all local changes. Send the JSON body as `text/plain`: the handler
        reads the raw stream, and with `Content-Type: application/json` the
        request never answers. **AdminAndFluxTeam**
      operationId: fluxSyncthingDbRevert
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: post
                  description: >-
                    HTTP method used against Syncthing
                folder:
                  type: string
                  description: folder
            example:
              folder: fluxwp_wordpress1678382606717
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: ""  
  /syncthing/db/prio:
    post:
      tags:
        - Syncthing
      summary: Moves the file to the top of the download queue
      description: >-
        Moves the file to the top of the download queue ```folder``` and
        ```file``` params are mandatory. Send the JSON body as `text/plain`: the
        handler reads the raw stream, and with `Content-Type: application/json`
        the request never answers. **AdminAndFluxTeam**
      operationId: fluxSyncthingDbPrio
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: post
                  description: >-
                    HTTP method used against Syncthing
                folder:
                  type: string
                  description: folder
                file:
                  type: string
                  description: File path within the folder (mandatory)
            example:
              folder: fluxwp_wordpress1678382606717
              file: /
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  page: 1
                  perpage: 65536
                  progress: []
                  queued: []
                  rest: []
  /syncthing/db/override:
    post:
      tags:
        - Syncthing
      summary: Request override of a send only folder
      description: >-
        Request override of a send only folder. Override means to make the local
        version latest, overriding changes made on other devices. This API call
        does nothing if the folder is not a send only folder. Takes the
        mandatory parameter ```folder``` (folder ID). Send the JSON body as
        `text/plain`: the handler reads the raw stream, and with `Content-Type:
        application/json` the request never answers. **AdminAndFluxTeam**
      operationId: fluxSyncthingDbOverride
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum: [get, post, put, patch, delete]
                  default: post
                  description: >-
                    HTTP method used against Syncthing
                folder:
                  type: string
                  description: folder
            example:
              folder: fluxwp_wordpress1678382606717
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data: ""
  /syncthing/deviceid:
    get:
      tags:
        - Syncthing
      summary: Display deviceid
      description: Returns deviceid. **Public**
      operationId: fluxSyncthingDeviceID
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2
  /apps/fluxshare/getfile:
    get:
      tags:
        - Fluxshare
      summary: Share files
      description: >-
        Downloads a file the node's operator left in the legacy FluxShare
        (ZelShare) folder. Read-only: FluxShare no longer accepts, shares or
        deletes files, and the share-token link is gone. **Admin**
      operationId: fluxShareFile
      security:
        - FluxID: []
      parameters:
        - in: query
          name: file
          required: true
          schema:
            type: string
          description: >-
            File name of share file to view or download. Can be nested in
            additional folder.
          example: 5688d73c4e136d1e0ef33b600
      responses:
        '200':
          description: Share file to view/download
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
              example: Hello world
  /apps/fluxshare/getfolder:
    get:
      tags:
        - Fluxshare
      summary: FluxShare - Get folder content
      description: Call to get content of folder in fluxshare. **Admin**
      operationId: GetFolder
      security:
        - FluxID: []
      parameters:
        - in: query
          name: folder
          required: false
          schema:
            type: string
          description: >-
            Folder under the share root; the share root when omitted. A named
            folder that does not exist is an error; a node with no share folder
            at all answers an empty list.
          example: test
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name: 
                          type: string
                          description: Name of file
                        size:
                          type: integer
                          nullable: true
                          description: Size of file in bytes; null for a directory
                        isDirectory:
                          type: boolean
                          description: True if item is directory
                        isFile:
                          type: boolean
                          description: True if item is file
                        isSymbolicLink:
                          type: boolean
                          description: True if item is symbolic link
                        createdAt:
                          type: string
                          description: Create date of item
                        modifiedAt:
                          type: string
                          description: Modifi date of item 
              example:
                status: success
                data:
                  - name: b1fcb9da0a941468f2c8cde01.txt
                    size: 119273
                    isDirectory: false
                    isFile: true
                    isSymbolicLink: false
                    createdAt: 2022-04-09T10:38:18.482Z
                    modifiedAt: 2022-04-09T10:38:18.562Z
  /apps/listrunningapps:
    get:
      tags:
        - Apps
      summary: list running apps
      description: >-
        List of running app containers, each as `Names`, `State` and `Status`
        only. Also lists stopped containers of an app whose backup or restore is
        in progress. **Public**
      operationId: listRunningApps
      security: []
      x-codeSamples:
        - lang: 'curl'
          source: |
            curl -X GET "https://api.runonflux.io/apps/listrunningapps"
        - lang: 'JavaScript'
          source: |
            const response = await fetch('https://api.runonflux.io/apps/listrunningapps');
            const apps = await response.json();
            
            // Display running apps
            apps.data.forEach(app => {
              console.log(`App: ${app.Names[0]} - Status: ${app.State}`);
            });
        - lang: 'Python'
          source: |
            import requests
            
            response = requests.get('https://api.runonflux.io/apps/listrunningapps')
            apps_data = response.json()
            
            for app in apps_data['data']:
                print(f"App: {app['Names'][0]} - Status: {app['State']}")
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        Names:
                          type: array
                          items:
                            type: string
                          description: Docker's container names, verbatim (e.g. `/fluxmycomponent_myapp`)
                        State:
                          type: string
                          description: Docker's container state
                        Status:
                          type: string
                          description: Docker's human-readable status
              example:
                status: success
                data:
                  - Names:
                      - /fluxFoldingAtHome
                    State: running
                    Status: Up 5 days
  /apps/listallapps:
    get:
      tags:
        - Apps
      summary: list all apps
      description: >-
        List of every app container on this node, running or not, each as
        `Names`, `State` and `Status` only. **Public**
      operationId: listAllApps
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        Names:
                          type: array
                          items:
                            type: string
                          description: Docker's container names, verbatim (e.g. `/fluxmycomponent_myapp`)
                        State:
                          type: string
                          description: Docker's container state
                        Status:
                          type: string
                          description: Docker's human-readable status
              example:
                status: success
                data:
                  - Names:
                      - /fluxFoldingAtHome
                    State: running
                    Status: Up 5 days
  /apps/listappsimages:
    get:
      tags:
        - Apps
      summary: List of images
      description: List of apps images installed. **FluxTeam**
      operationId: listAppsImages
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        Containers:
                          type: integer
                          description: Container number
                        Created:
                          type: integer
                          description: Time created in epoch time
                        Id:
                          type: string
                          description: Hash of image
                        Labels:
                          type: object
                          description: User-defined key/value metadata
                          properties:
                            description:
                              type: string
                              description: Description of image
                            maintainer:
                              type: string
                              description: Name of maintainer
                            repository:
                              type: string
                              description: Url of repository
                            version:
                              type: number
                              description: Version number
                        ParentId:
                          type: string
                          description: Parent Id if available
                        RepoDigests:
                          type: array
                          items:
                            type: string
                            description: Content addressable identifier
                        RepoTags:
                          type: array
                          items:
                            type: string
                            description: Repo tag name
                        SharedSize:
                          type: integer
                          description: Number of shared size
                        Size:
                          type: integer
                          description: Size in bytes
                        VirtualSize:
                          type: integer
                          description: Size in bytes
              example:
                status: success
                data:
                  - Containers: -1
                    Created: 1588224617
                    Id: >-
                      sha256:8bd1fb3dd2de02f8d4403c657da6a19efeef9286981537b30d2a107079018402
                    Labels:
                      description: Unofficial Folding@Home image for CPU compute
                      maintainer: yurinnick
                      repository: 'https://github.com/yurinnick/folding-at-home-docker'
                      version: 7.6
                  - ParentId: ''
                    RepoDigests:
                      - >-
                        yurinnick/folding-at-home@sha256:da4a32a257883ce5b796482d0f82ec1d1f191056600eb490e1195a65f6100d6d
                    RepoTags:
                      - 'yurinnick/folding-at-home:latest'
                    SharedSize: -1
                    Size: 85515870
                    VirtualSize: 85515870
  /apps/installedapps:
    get:
      tags:
        - Apps
      summary: installed apps
      description: Info of installed apps. **Public**
      operationId: installedApps
      security: []
      parameters:
        - in: query
          name: appname
          required: false
          schema:
            type: string
          description: Restrict the listing to one application
          example: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        _id:
                          type: string
                          description: App id
                        repotag:
                          type: string
                          description: Repository tag
                        name:
                          type: string
                          description: Name of app
                        port:
                          type: integer
                          description: Port number
                        cpu:
                          type: number
                          description: CPU usage
                        ram:
                          type: integer
                          description: Ram usage
                        hdd:
                          type: integer
                          description: Disk usage
                        enviromentParameters:
                          type: array
                          items:
                            type: string
                            description: Parameters
                        commands:
                          type: array
                          items:
                            type: string
                            description: Parameters
                        containerPort:
                          type: integer
                          description: Port number
                        containerData:
                          type: string
                          description: Dir of container
              example:
                status: success
                data:
                  - _id: 5ea5ded34640e92141c6ce35
                    repotag: 'yurinnick/folding-at-home:latest'
                    name: fluxFoldingAtHome
                    port: 30000
                    cpu: 0.5
                    ram: 500
                    hdd: 15
                    enviromentParameters:
                      - USERS=1MQetQGLuSmf6QVvYJFwuSR66WrU47G6NG
                      - TEAM=262156
                      - ENABLE_GPU=false
                      - ENABLE_SMP=true
                    commands:
                      - '--allow'
                      - 0/0
                      - '--web-allow'
                      - 0/0
                    containerPort: 7396
                    containerData: /config
  /apps/availableapps:
    get:
      tags:
        - Apps
      summary: available apps
      description: Info of available apps. **Public**
      operationId: availableApps
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: App name/id
                        repotag:
                          type: string
                          description: Repository tag
                        owner:
                          type: string
                          description: User's id
                        timestamp:
                          type: integer
                          description: Time stamp in epoch time
                        validTill:
                          type: integer
                          description: Valid time in epoch time
                        tiered:
                          type: boolean
                          description: Tier option
                        port:
                          type: integer
                          description: Port number
                        cpu:
                          type: number
                          description: CPU usage
                        ram:
                          type: integer
                          description: Ram usage
                        hdd:
                          type: integer
                          description: Disk usage
                        cpubasic:
                          type: string
                          description: CPU usage
                        cpusuper:
                          type: string
                          description: CPU usage
                        cpubamf:
                          type: string
                          description: CPU usage
                        rambasic:
                          type: integer
                          description: Ram usage
                        ramsuper:
                          type: integer
                          description: Ram usage
                        rambamf:
                          type: integer
                          description: Ram usage
                        hddbasic:
                          type: integer
                          description: Disk usage
                        hddsuper:
                          type: integer
                          description: Disk usage
                        hddbamf:
                          type: integer
                          description: Disk usage
                        enviromentParameters:
                          type: array
                          items:
                            type: string
                            description: Parameters
                        commands:
                          type: array
                          items:
                            type: string
                            description: Parameters
                        containerPort:
                          type: integer
                          description: Port number
                        containerData:
                          type: string
                          description: Dir of container
                        signature:
                          type: string
                          description: Signature
                        txid:
                          type: string
                          description: Txid
              example:
                status: success
                data:
                  - name: fluxFoldingAtHome
                    repotag: 'yurinnick/folding-at-home:latest'
                    owner: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
                    timestamp: 1587181519000
                    validTill: 1608263119000
                    tiered: true
                    port: 30000
                    cpu: 0.5
                    ram: 500
                    hdd: 15
                    cpubasic: 0.5
                    cpusuper: 1
                    cpubamf: 2
                    rambasic: 500
                    ramsuper: 1000
                    rambamf: 4000
                    hddbasic: 15
                    hddsuper: 15
                    hddbamf: 15
                    enviromentParameters:
                      - USERS=1MQetQGLuSmf6QVvYJFwuSR66WrU47G6NG
                      - TEAM=262156
                      - ENABLE_GPU=false
                      - ENABLE_SMP=true
                    commands:
                      - '--allow'
                      - 0/0
                      - '--web-allow'
                      - 0/0
                    containerPort: 7396
                    containerData: /config
                    signature: todo
                    txid: todo
  /apps/fluxusage:
    get:
      tags:
        - Apps
      summary: Flux's usage
      description: Will return amount of cpu resource flux is using. **Public**
      operationId: FluxUsage
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: number
                    description: Amount of cpu resource using
              example:
                status: success
                data: 0.20717773
  /apps/appsresources:
    get:
      tags:
        - Apps
      summary: Flux's usage of resources
      description: Will return data of resource flux is using. **Public**
      operationId: appsResources
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/appsresources'
              example:
                status: success
                data:
                  appsCpusLocked: 0
                  appsRamLocked: 0
                  appsHddLocked: 0
  /apps/registrationinformation:
    get:
      tags:
        - Apps
      summary: Registration Info
      description: Apps registration info. **Public**
      operationId: registrationInformation
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      price:
                        type: object
                        description: Price guide
                        properties:
                          cpu:
                            type: integer
                            description: FLUX amount per 0.1 cpu core
                          ram:
                            type: integer
                            description: FLUX amount per 100 mb
                          hdd:
                            type: number
                            description: FLUX amount per 1 gb
                      address:
                        type: string
                        description: Apps registration address
                      epochstart:
                        type: integer
                        description: Fluxapps epoch blockheight start
                      portMin:
                        type: integer
                        description: Min number in port range
                      portMax:
                        type: integer
                        description: Max number in port range
                      maxImageSize:
                        type: integer
                        description: Max number of image size allowed in bytes
                      installation:
                        type: object
                        properties:
                          probability:
                            type: integer
                            description: Instances it will spawn this round
                          delay:
                            type: integer
                            description: Delay time in seconds
                      removal:
                        type: object
                        properties:
                          probability:
                            type: integer
                            description: >-
                              Instances it will remove if amount of apps exceed
                              limit at a 1 out of 20 rate.
                          delay:
                            type: integer
                            description: Delay time in seconds
                      blocksLasting:
                        type: integer
                        description: >-
                          Amount of time registered app is live in blocks. 22000
                          blocks = 1 month
              example:
                status: success
                data:
                  price:
                    cpu: 15
                    ram: 5
                    hdd: 2.5
                  address: t1...
                  epochstart: 690000
                  portMin: 31000
                  portMax: 39999
                  maxImageSize: 300000000
                  installation:
                    probability: 2
                    delay: 120
                  removal:
                    probability: 20
                    delay: 300
                  blocksLasting: 22000
  /apps/temporarymessages:
    get:
      tags:
        - Apps
      summary: Temporary registration info
      description: Temporary registration info that will expire after 1 hour. **Public**
      operationId: getAppsTemporaryMessages
      security: []
      parameters:
        - in: query
          name: hash
          required: false
          schema:
            type: string
          description: Aplication hash
          example: e9293e7eebc51586e7b90557f924b70a766ab970c91a6c923520577021424cb9
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        appSpecifications:
                          $ref: '#/components/schemas/appspecification'
                        type:
                          type: string
                          description: Message type
                        version:
                          type: integer
                          description: Message version
                        hash:
                          type: string
                          description: Message hash
                        timestamp:
                          type: integer
                          description: Timestamp of message in epoch/unix
                        signature:
                          type: string
                          description: Signature from signed message
                        receivedAt:
                          type: string
                          description: Date and time of received message
                        expiredAt:
                          type: string
                          description: Date and time when message expires
              example:
                status: success
                data:
                  - appSpecifications:
                      version: 7
                      name: mexcdnxbot
                      description: DNX trading bot
                      owner: 1DSBszWHPNs4MXwRdtV7wDLKDXRefzVYVi
                      compose:
                        - name: mexcdnxbot
                          description: DNX trading bot
                          repotag: botinflux/mexc-dnx-bot:latest
                          ports: []
                          domains: []
                          environmentParameters:
                            - api_key=mx0vddeecVubo
                            - secret_key=b5c0433de7b2c1105222667871
                            - email_sender=cla23lans@gmail.com
                            - email_receiver=clas23xclans@gmail.com
                            - email_password=cjpv23pnjmuhl
                          commands: []
                          containerPorts: []
                          containerData: /tmp
                          cpu: 1
                          ram: 1000
                          hdd: 5
                          tiered: false
                          secrets: ''
                          repoauth: ''
                      instances: 3
                      contacts:
                        - F_S_CONTACTS=https://storage.runonflux.io/v1/contacts/375596725336268
                      geolocation:
                        - a!cAS_ID
                      expire: 22000
                      nodes: []
                      staticip: false
                    type: fluxappregister
                    version: 1
                    hash: 11287d6b41cc35657d34e882678fbe8494a820e05eb006ef886512872fe28c98
                    timestamp: 1692715746982
                    signature: Hw4G1u4APaVaw+ZX6qnpYJmHLZrQG/xK3w5WJ2efqTYSYUQUQdW2g6xsr1imi7F/YLybyOj3LQiByxVc7i40Ljk=
                    receivedAt: '2023-08-22T14:50:33.485Z'
                    expireAt: '2023-08-22T15:50:33.485Z'
  /apps/permanentmessages:
    get:
      tags:
        - Apps
      summary: Permanent registration info
      description: >-
        Registration info of apps that have been stored to the database.
        **Public**
      operationId: getAppsPermanentMessages
      security: []
      parameters:
        - in: query
          name: hash
          required: false
          schema:
            type: string
          description: Application hash
          example: e9293e7eebc51586e7b90557f924b70a766ab970c91a6c923520577021424cb9
        - in: query
          name: owner
          required: false
          schema:
            type: string
          description: Application FluxID
          example: 15Mt8ctAFTVVzsx9UynnqxgM5JJuiwMPhs
        - in: query
          name: appname
          required: false
          schema:
            type: string
          description: Application name
          example: FoldingAtFluxCloud1693167320638
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          description: Message type ```fluxappregister``` or ```fluxappupdate```
                        version:
                          type: integer
                          description: Application specification message version, current 1
                        appSpecifications:
                          $ref: '#/components/schemas/appspecification'
                        hash:
                          type: string
                          description: Message hash
                        timestamp:
                          type: integer
                          description: Timestamp of message in epoch/unix
                        signature:
                          type: string
                          description: Signature from signed message
                        txid:
                          type: string
                          description: Transction ID of app payment
                        height:
                          type: integer
                          description: Block height of transaction
                        valueSat:
                          type: integer
                          description: Flux sat value of payment amount
              example:
                status: success
                data:
                  - type: fluxappupdate
                    version: 1
                    appSpecifications:
                      version: 7
                      name: HH1u
                      description: HH1u
                      owner: 1xw845H9vKEjvcghMiYFy3htnBay7KpN9
                      compose:
                        - name: brit
                          description: brit
                          repotag: sandmanshiri/uni:2.0
                          ports:
                            - 38151
                            - 37234
                          domains:
                            - ''
                            - ''
                          environmentParameters:
                            - RP=Mhskap0737
                            - RUP=Mhskap0737
                            - NPU=40
                            - prefix=MHssh20
                            - udport=37234
                            - limit=1
                            - IP=2
                            - SIN=1357
                          commands: []
                          containerPorts:
                            - 22
                            - 37234
                          containerData: s:/home
                          cpu: 0.1
                          ram: 100
                          hdd: 3
                          tiered: false
                          secrets: ''
                          repoauth: ''
                      instances: 3
                      contacts: []
                      geolocation:
                        - acEU_PT
                      expire: 22000
                      nodes: []
                      staticip: false
                    hash: bab9b6d419316bebbe2a98d8b585377c8a10177f59e3032a3dafa536490ae46c
                    timestamp: 1693123992018
                    signature: IJ3NFgmxOgsnTfYNLR7u/FlNmUKAaIdto6BmPCuse9p3cVUrNJA9Oj0xJmuMZJsawWv2t7Wv6hWQBQC2DHFRDeg=
                    txid: 0f2512106561e096193787d1fd35d97114ac85beb84fdf6b11cc7cb32bd85048
                    height: 1456168
                    valueSat: 3000000
                  - type: fluxappregister
                    version: 1
                    appSpecifications:
                      version: 4
                      name: StreamrNode1693128754201
                      description: The Streamr Broker Node hosted via the Flux Cloud
                      owner: 14N5LBR23NBxJVR4QLgyWnvSb2QmLHAjbL
                      compose:
                        - name: streamrbroker
                          description: The Streamr Broker Node Container
                          repotag: streamr/broker-node:latest
                          ports:
                            - 31111
                            - 31112
                            - 31113
                          domains:
                            - ''
                            - ''
                            - ''
                          environmentParameters:
                            - STREAMR__BROKER__PLUGINS__BRUBECK_MINER__BENEFICIARY_ADDRESS=0x11D482E93b08cC46493BC88cf1770Cb91ec59A98
                          commands: []
                          containerPorts:
                            - 1883
                            - 7170
                            - 7171
                          containerData: /home/streamr/.streamr
                          cpu: 1
                          ram: 1000
                          hdd: 1
                          tiered: false
                      instances: 3
                    hash: e33205dcd24eed1957e6fd0a5913c7cc6972097f6a00ae72b929f9ffbe4c05c3
                    timestamp: 1693128755202
                    signature: IE/O0HPxxuHKrKz/M6MF+MpVRZ6JyjFQzCSaubyMsjngSGRwuXdQvesauavlD4pWJE3HC0KAdEB0n/MT7h7fN7g=
                    txid: 8087dfb4a99d9c6984ded97a3ea2b500833f981b8fc35d96ed339363c2bd77be
                    height: 1456206
                    valueSat: 599000000
  /apps/globalappsspecifications:
    get:
      tags:
        - Apps
      summary: Global app specs
      description: List of global app specifications. **Public**
      operationId: getGlobalAppsSpecifications
      security: []
      parameters:
        - in: query
          name: hash
          required: false
          schema:
            type: string
          description: Filter by the application message hash
          example: 8f14e45fceea167a5a36dedd4bea2543
        - in: query
          name: owner
          required: false
          schema:
            type: string
          description: Filter by owner FluxID
          example: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
        - in: query
          name: appname
          required: false
          schema:
            type: string
          description: Filter by application name
          example: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
              example:
                status: success
                data:
                  - name: FoldingAtFluxCloud1692691337989
                    compose:
                      - name: FoldingAtHome
                        description: Folding @ Home for AMD64 Devices.
                        repotag: yurinnick/folding-at-home:latest
                        ports:
                          - 35555
                        domains:
                          - ''
                        environmentParameters:
                          - TEAM=222256
                          - USER=stam342kara
                        commands: []
                        containerPorts:
                          - 7396
                        containerData: /config
                        cpu: 1
                        ram: 700
                        hdd: 3
                        tiered: false
                    description: PoUW at Flux layer 2 network. Folding@home is a project focused on disease research. Client Visit was disabled, to check Run On Flux team stats go to https://stats.foldingathome.org/team/262156
                    hash: 05477aab02112b1db73a83ecee18d04a6933efddff80433c1ac10abf611ec9f1
                    height: 1452583
                    instances: 3
                    owner: 1CS3fDTSkyJhsAST6xoeG4VG8ReWtuYhju
                    version: 4
                  - name: StreamrNode1692696525963
                    compose:
                      - name: streamrbroker
                        description: The Streamr Broker Node Container
                        repotag: streamr/broker-node:latest
                        ports:
                          - 31111
                          - 31112
                          - 31113
                        domains:
                          - ''
                          - ''
                          - ''
                        environmentParameters:
                          - STREAMR__BROKER__PLUGINS__BRUBECK_MINER__BENEFICIARY_ADDRESS=0xc60FA67aFd5A4332214D483b4Ff8E2993C8e3999
                        commands: []
                        containerPorts:
                          - 1883
                          - 7170
                          - 7171
                        containerData: /home/streamr/.streamr
                        cpu: 1
                        ram: 1000
                        hdd: 1
                        tiered: false
                    description: The Streamr Broker Node hosted via the Flux Cloud
                    hash: f647632c17c17a8feb7b8f39cc33eb9d0cde448d93ca8a251dab54dbee970638
                    height: 1452619
                    instances: 3
                    owner: 1MhgaXdkNTqxvxxMBBWqmxvWTCRZ1kBYUQ
                    version: 4
                  - name: mexcdnxbot
                    compose:
                      - name: mexcdnxbot
                        description: DNX trading bot
                        repotag: botinflux/mexc-dnx-bot:latest
                        ports: []
                        domains: []
                        environmentParameters:
                          - F_S_ENV=https://storage.runonflux.io/v1/env/920423489107913
                        commands: []
                        containerPorts: []
                        containerData: /tmp
                        cpu: 1
                        ram: 1000
                        hdd: 5
                        tiered: false
                        secrets: ''
                        repoauth: ''
                    contacts:
                      - F_S_CONTACTS=https://storage.runonflux.io/v1/contacts/375596725336268
                    description: DNX trading bot
                    expire: 22000
                    geolocation:
                      - a!cAS_ID_NONE
                    hash: b9f3040c63ba8820acddcff5e503e8047a5c603ed734bb9bac953dcdc04ee33c
                    height: 1452806
                    instances: 3
                    nodes: []
                    owner: 1DSBszWHPNs4MXwRdtV7wDLKDXRefzVYVi
                    staticip: false
                    version: 7
  /apps/appspecifications/{appname}:
    get:
      tags:
        - Apps
      summary: Global app specs of app specified
      description: >-
        Returns the specifications of the queried application.


        For an **enterprise application** (specification version 8 or above with
        `enterprise` set) the `compose` and `contacts` fields are always
        returned empty. With `decrypt`, which requires the application owner's
        authentication and an `enterprise-key` header, the owner receives
        `enterprise` re-encrypted to the session key from that header. Refused
        while the daemon is not synced.
        **Public** (decrypted view: **AppOwner**)
      operationId: getApplicationSpecificationAPI
      security: []
      parameters:
        - in: path
          name: appname
          required: true
          schema:
            type: string
          description: Application name
          example: mexcdnxbot
        - in: query
          name: decrypt
          required: false
          schema:
            type: string
          description: >-
            Any non-empty value requests the owner view of an enterprise
            application (decrypt=false requests it too — omit the parameter for
            the public view). Also accepted as a second path segment.
          example: 'true'
        - in: header
          name: enterprise-key
          required: false
          schema:
            type: string
          description: Required with `decrypt` — the session key the returned `enterprise` field is encrypted to.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/appname'
              example:
                status: success
                data:
                  name: mexcdnxbot
                  compose:
                    - name: mexcdnxbot
                      description: DNX trading bot
                      repotag: botinflux/mexc-dnx-bot:latest
                      ports: []
                      domains: []
                      environmentParameters:
                        - F_S_ENV=https://storage.runonflux.io/v1/env/920423489107913
                      commands: []
                      containerPorts: []
                      containerData: /tmp
                      cpu: 1
                      ram: 1000
                      hdd: 5
                      tiered: false
                      secrets: ''
                      repoauth: ''
                  contacts:
                    - F_S_CONTACTS=https://storage.runonflux.io/v1/contacts/375596725336268
                  description: DNX trading bot
                  expire: 22000
                  geolocation:
                    - a!cAS_ID_NONE
                  hash: b9f3040c63ba8820acddcff5e503e8047a5c603ed734bb9bac953dcdc04ee33c
                  height: 1452806
                  instances: 3
                  nodes: []
                  owner: 1DSBszWHPNs4MXwRdtV7wDLKDXRefzVYVi
                  staticip: false
                  version: 7
  /apps/appowner:
    get:
      tags:
        - Apps
      summary: App owner's FluxID
      description: This will return the FluxID of the owner of the app specified. **Public**
      operationId: getApplicationOwnerAPI
      security: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Appname
          example: CryptPadOnFlux
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: App owner's FluxID
              example:
                status: success
                data: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
  /apps/hashes:
    get:
      tags:
        - Apps
      summary: Application Hash info
      description: Get list of app hashes and related info. **Public**
      operationId: getAppHashes
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        txid:
                          type: string
                          description: Transaction ID of app payment
                        height:
                          type: integer
                          description: Block height of transaction
                        hash:
                          type: string
                          description: Hash of app registration
                        value:
                          type: integer
                          description: Payment of Flux value in sats
                        message:
                          type: boolean
                          description: If message is stored or not.
              example:
                status: success
                data:
                  - txid: >-
                      885f11f8a44cf1ac9673fb5c745688a95715295e3c3d0d69517a17ab652f8780
                    height: 645719
                    hash: >-
                      b44f1efe7bffc48b62d230f57341ce7fa193b71780491c1bc53c53e502e08d23
                    value: 2800000000
                    message: true
                  - txid: >-
                      91b36e75d0d08640656448de469ff10876dbad3923860b47c1f57a10ab99359f
                    height: 645757
                    hash: >-
                      c9a1a06bc0ff4786607dff32df4b820aedd5e3ca9803fbb29bb0ffb10e170e42
                    value: 4500000000
                    message: true
  /apps/location:
    get:
      tags:
        - Apps
      summary: Info regarding app location
      description: >-
        This will return data regarding the location of app specified.
        **Public**
      operationId: getAppsLocation
      security: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Appname
          example: electrumxtest
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/appslocation'
              example:
                status: success
                data:
                  - ip: 62.171.163.150
                    name: electrumxtest
                    broadcastedAt: '020-09-19T09:04:56.638Z'
                    expireAt: '2020-09-19T10:09:56.638Z'
                    hash: >-
                      6055e9bef2fbd01c3561c4c1f87ba816921b51b6012d76a2f2b78efe8d3a0f8e
                  - ip: 116.203.253.186
                    name: electrumxtest
                    broadcastedAt: '2020-09-19T09:05:09.069Z'
                    expireAt: '2020-09-19T10:10:09.069Z'
                    hash: >-
                      6055e9bef2fbd01c3561c4c1f87ba816921b51b6012d76a2f2b78efe8d3a0f8e
  /apps/locations:
    get:
      tags:
        - Apps
      summary: List of app locations
      description: >-
        This will return a list of known apps on the network and it's locations
        data. **Public**
      operationId: getAppsLocations
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/appslocation'
              example:
                status: success
                data:
                  - ip: 62.171.163.150
                    name: electrumxtest
                    broadcastedAt: '020-09-19T09:04:56.638Z'
                    expireAt: '2020-09-19T10:09:56.638Z'
                    hash: >-
                      6055e9bef2fbd01c3561c4c1f87ba816921b51b6012d76a2f2b78efe8d3a0f8e
                  - ip: 116.203.253.186
                    name: dibi-UND
                    broadcastedAt: '2020-09-19T09:24:50.590Z'
                    expireAt: '2020-09-19T10:29:50.590Z'
                    hash: ahashofappmessage
                  - ip: 62.171.163.150
                    name: PacMan
                    broadcastedAt: '2020-09-19T09:25:02.568Z'
                    expireAt: '2020-09-19T10:30:02.568Z'
                    hash: >-
                      818da1ce6a32ed85d02a3e784fbbd0fd21709a4108bdc5d1f6cbc474559cfa7c
                  - ip: 161.35.41.11
                    name: FoldingAtHomeB
                    broadcastedAt: '2020-09-19T09:24:12.428Z'
                    expireAt: '2020-09-19T10:29:12.428Z'
                    hash: ahashofappmessage
  /apps/calculateprice:
    post:
      tags:
        - Apps
      summary: Calculate price of app
      description: >-
        **DEPRECATED**: To get app price. Should be used getAppFiatAndFluxPrice method instead.
        Calculate price by sending request with specs required for app you are
        registering. **Public**

        Note: If tiered value is set to true you will also need to add the
        following key/value pairs

        - `cpubasic: <n value of cpu core>`, `cpusuper: <n value of cpu core>`,
        `cpubamf: <n value of cpu core>`, `rambasic: <n value in mb>`,
        `ramsuper: <n value in mb>`, `rambamf: <n value in mb>`, `hddbasic: <n
        value in gb>`, `hddsuper: <n value in gb>`, `hddbamf: <n value in gb>`
      operationId: getAppPrice
      security: []
      deprecated: true
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                version:
                  type: integer
                  description: Version of message which is 7
                name:
                  type: string
                  description: Name of app
                description:
                  type: string
                  description: Description of app
                owner:
                  type: string
                  description: Your FluxID
                compose:
                  type: array
                  items:
                    type: object
                    description: component specification
                    properties:
                      name:
                        type: string
                        description: Name of app
                      description:
                        type: string
                        description: Description of component
                      repotag:
                        type: string
                        description: 'Repotag of docker image in this format `namespace/repository:tag`'
                      ports:
                        type: array
                        items:
                          type: integer
                          description: Ports list
                      domains:
                        type: array
                        items:
                          type: string
                          description: Domain list
                      enviromentParameters:
                        type: array
                        items:
                          type: string
                          description: Environment variables
                      commands:
                        type: array
                        items:
                          type: string
                          description: Execution list
                      containerPorts:
                        type: array
                        items:
                          type: integer
                          description: Container ports
                      containerData:
                        type: string
                        description: >-
                          Directory the data is stored and what dir is tied to the system
                          folder
                      cpu:
                        type: number
                        description: CPU amount requesting
                      ram:
                        type: integer
                        description: Ram amount requesting in MB
                      hdd:
                        type: integer
                        description: Storage space requesting in GB
                      tiered:
                        type: boolean
                        description: >-
                          If set to true you will also need following key/value pairs to
                          provide tiered info. If false do not add the following key/value
                          pairs.
                      cpubasic:
                        type: number
                        description: CPU amount
                      cpusuper:
                        type: number
                        description: CPU amount
                      cpubamf:
                        type: number
                        description: CPU amount
                      rambasic:
                        type: integer
                        description: Ram amount in MB
                      ramsuper:
                        type: integer
                        description: Ram amount in MB
                      rambamf:
                        type: integer
                        description: Ram amount in MB
                      hddbasic:
                        type: integer
                        description: Storage space in GB
                      hddsuper:
                        type: integer
                        description: Storage space in GB
                      hddbamf:
                        type: integer
                        description: Storage space in GB
                      secrets:
                        type: string
                        description: >-
                          Array of strings of Secret Environmental Parameters. This will be encrypted and accessible to selected Enterprise Nodes only.
                      repoauth:
                        type: string
                        description: >-
                          Docker image authentication for private images in the format of username:apikey. This field will be encrypted and accessible to selected Enterprise Nodes only.
                instances:
                  type: integer
                  description: Instances number             
                contacts:
                  type: array
                  items:
                    type: string
                    description: Mail list
                geolocation:
                  type: array
                  items:
                    type: string
                    description: Geolocation symbols 
                expire:
                  type: integer
                  description: Number of blocks after apps expire 
                nodes:
                  type: array
                  items:
                    type: string
                    description: Enterprise Nodes IP list          
                staticip:
                  type: boolean
                  description: >-
                    If set to true apps will be installed of nodes with static IP only.
            example:
              version: 7
              name: blockbookneurai
              description: Blockbook for Neurai
              owner: 1XcNTEsgVND4eb3bsVa2bjktnZZSruVct
              compose:
                - name: blockbookneurai
                  description: Blockbook for Neurai
                  repotag: runonflux/blockbook-docker:latest
                  ports:
                    - 38382
                    - 38383
                  domains:
                    - ''
                    - ''
                  environmentParameters: []
                  commands: []
                  containerPorts:
                    - 9199
                    - 1337
                  containerData: /root
                  cpu: 2.5
                  ram: 5000
                  hdd: 40
                  tiered: false
                  secrets: ''
                  repoauth: ''
              instances: 3
              contacts: []
              geolocation: []
              expire: 22000
              nodes: []
              staticip: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: FLUX amount
              example:
                status: success
                data: 1.6
  /apps/calculatefiatandfluxprice:
    post:
      tags:
        - Apps
      summary: Calculate price of app
      description: >-
        Calculate price by sending request with specs required for app you are
        registering. The USD price is rounded up to the next figure ending in
        .49 or .99, and the Flux price follows from it. A caller may send
        `priceUSD`: it is returned exactly as sent, and refused if below the
        computed price. Synced (g:) applications pay the full price. **Public**

        Note: If tiered value is set to true you will also need to add the
        following key/value pairs

        - `cpubasic: <n value of cpu core>`, `cpusuper: <n value of cpu core>`,
        `cpubamf: <n value of cpu core>`, `rambasic: <n value in mb>`,
        `ramsuper: <n value in mb>`, `rambamf: <n value in mb>`, `hddbasic: <n
        value in gb>`, `hddsuper: <n value in gb>`, `hddbamf: <n value in gb>`
      operationId: getAppPriceNew
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                version:
                  type: integer
                  description: Version of message which is 7
                name:
                  type: string
                  description: Name of app
                description:
                  type: string
                  description: Description of app
                owner:
                  type: string
                  description: Your FluxID
                compose:
                  type: array
                  items:
                    type: object
                    description: component specification
                    properties:
                      name:
                        type: string
                        description: Name of app
                      description:
                        type: string
                        description: Description of component
                      repotag:
                        type: string
                        description: 'Repotag of docker image in this format `namespace/repository:tag`'
                      ports:
                        type: array
                        items:
                          type: integer
                          description: Ports list
                      domains:
                        type: array
                        items:
                          type: string
                          description: Domain list
                      enviromentParameters:
                        type: array
                        items:
                          type: string
                          description: Environment variables
                      commands:
                        type: array
                        items:
                          type: string
                          description: Execution list
                      containerPorts:
                        type: array
                        items:
                          type: integer
                          description: Container ports
                      containerData:
                        type: string
                        description: >-
                          Directory the data is stored and what dir is tied to the system
                          folder
                      cpu:
                        type: number
                        description: CPU amount requesting
                      ram:
                        type: integer
                        description: Ram amount requesting in MB
                      hdd:
                        type: integer
                        description: Storage space requesting in GB
                      tiered:
                        type: boolean
                        description: >-
                          If set to true you will also need following key/value pairs to
                          provide tiered info. If false do not add the following key/value
                          pairs.
                      cpubasic:
                        type: number
                        description: CPU amount
                      cpusuper:
                        type: number
                        description: CPU amount
                      cpubamf:
                        type: number
                        description: CPU amount
                      rambasic:
                        type: integer
                        description: Ram amount in MB
                      ramsuper:
                        type: integer
                        description: Ram amount in MB
                      rambamf:
                        type: integer
                        description: Ram amount in MB
                      hddbasic:
                        type: integer
                        description: Storage space in GB
                      hddsuper:
                        type: integer
                        description: Storage space in GB
                      hddbamf:
                        type: integer
                        description: Storage space in GB
                      secrets:
                        type: string
                        description: >-
                          Array of strings of Secret Environmental Parameters. This will be encrypted and accessible to selected Enterprise Nodes only.
                      repoauth:
                        type: string
                        description: >-
                          Docker image authentication for private images in the format of username:apikey. This field will be encrypted and accessible to selected Enterprise Nodes only.
                instances:
                  type: integer
                  description: Instances number             
                contacts:
                  type: array
                  items:
                    type: string
                    description: Mail list
                geolocation:
                  type: array
                  items:
                    type: string
                    description: Geolocation symbols 
                expire:
                  type: integer
                  description: Number of blocks after apps expire 
                nodes:
                  type: array
                  items:
                    type: string
                    description: Enterprise Nodes IP list          
                staticip:
                  type: boolean
                  description: >-
                    If set to true apps will be installed of nodes with static IP only.
            example:
              version: 7
              name: blockbookneurai
              description: Blockbook for Neurai
              owner: 1XcNTEsgVND4eb3bsVa2bjktnZZSruVct
              compose:
                - name: blockbookneurai
                  description: Blockbook for Neurai
                  repotag: runonflux/blockbook-docker:latest
                  ports:
                    - 38382
                    - 38383
                  domains:
                    - ''
                    - ''
                  environmentParameters: []
                  commands: []
                  containerPorts:
                    - 9199
                    - 1337
                  containerData: /root
                  cpu: 2.5
                  ram: 5000
                  hdd: 40
                  tiered: false
                  secrets: ''
                  repoauth: ''
              instances: 3
              contacts: []
              geolocation: []
              expire: 22000
              nodes: []
              staticip: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      usd:
                        type: number
                        description: Price in USD
                      flux:
                        type: number
                        description: Price in FLUX
                      fluxDiscount:
                        description: Percent discount for paying in FLUX, or a note when it cannot be defined
              example:
                status: success
                data:
                  usd: 7.49
                  flux: 4.73
                  fluxDiscount: 10
  /apps/appstart:
    get:
      tags:
        - Apps
      summary: Starts app
      description: This will start the fluxapp. **AppOwnerAbove**
      operationId: AppStart
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name, or component_app
          example: myapp
        - in: query
          name: global
          required: false
          schema:
            type: boolean
          description: Apply on every node the application runs on, rather than only this one
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Explanation of status
              example:
                status: success
                data: Application myapp started
  /apps/appstop:
    get:
      tags:
        - Apps
      summary: Stops app
      description: This will stop the Flux application. **AppOwnerAbove**
      operationId: AppStop
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name, or component_app
          example: myapp
        - in: query
          name: global
          required: false
          schema:
            type: boolean
          description: Apply on every node the application runs on, rather than only this one
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Explanation of status
              example:
                status: success
                data: Application myapp stopped
  /apps/apprestart:
    get:
      tags:
        - Apps
      summary: Restarts app
      description: This will restart the Flux application. **AppOwnerAbove**
      operationId: AppRestart
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name, or component_app
          example: myapp
        - in: query
          name: global
          required: false
          schema:
            type: boolean
          description: Apply on every node the application runs on, rather than only this one
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Explanation of status
              example:
                status: success
                data: Application myapp restarted
  /apps/apppause:
    get:
      tags:
        - Apps
      summary: Pause app
      description: >-
        **Removed.** Pausing applications is no longer supported and this
        endpoint always answers **HTTP 200** with `status: error` and
        `data.code: 410` — `Pausing applications is no longer supported. Use
        appstop to stop an application.` Use `GET /apps/appstop` instead. When `appname` is given the caller is still
        authorised before the refusal is returned. **AppOwnerAbove**
      operationId: appsAppPause
      deprecated: true
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: false
          schema:
            type: string
          description: Application name, or component_app
          example: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: error
                data:
                  code: 410
                  name: Deprecated
                  message: Pausing applications is no longer supported. Use appstop to stop an application.
  /apps/appunpause:
    get:
      tags:
        - Apps
      summary: Unpause app
      description: >-
        **Removed.** Pausing applications is no longer supported and this
        endpoint always answers **HTTP 200** with `status: error` and
        `data.code: 410`. Use `GET /apps/appstart` to start a stopped
        application. When `appname` is given the caller is still authorised
        before the refusal is returned. **AppOwnerAbove**
      operationId: AppUnpause
      deprecated: true
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: false
          schema:
            type: string
          description: Application name, or component_app
          example: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: error
                data:
                  code: 410
                  name: Deprecated
                  message: Pausing applications is no longer supported. Use appstop to stop an application.
  /apps/apptop:
    get:
      tags:
        - Apps
      summary: List of running processes
      description: Display the running processes of a container. **AppOwnerAbove**
      operationId: AppTop
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name, or component_app
          example: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      processes:
                        type: array
                        items:
                          type: string
                          description: >-
                            Each process running in the container, where each is
                            process is an array of values corresponding to the
                            titles
                      Titles:
                        type: array
                        items:
                          type: string
                          description: The ps column titles
              example:
                status: success
                data:
                  Processes:
                    - - 999
                      - 22001
                      - 21971
                      - 0
                      - 1123
                      - '?'
                      - '00:00:00'
                      - >-
                        /bin/bash /opt/fahclient/entrypoint.sh --allow 0/0
                        --web-allow 0/0
                    - - 999
                      - 22069
                      - 22001
                      - 0
                      - 1123
                      - '?'
                      - '00:00:01'
                      - >-
                        /opt/fahclient/FAHClient
                        --user=1CcoEkKQZcwUXPSps4bZJDjUM3mqe9bNXf --team=262156
                        --passkey= --gpu=false --smp=true --power=full
                        --gui-enabled=false --allow 0/0 --web-allow 0/0
                    - - 999
                      - 22085
                      - 22081
                      - 5
                      - 1123
                      - '?'
                      - >-
                        /opt/fahclient/cores/cores.foldingathome.org/v7/lin/64bit/avx/Core_a7.fah/FahCore_a7
                        -dir 00 -suffix 01 -version 706 -lifeline 15 -checkpoint
                        15 -np 2
                  Titles:
                    - UID
                    - PID
                    - PPID
                    - C
                    - STIME
                    - TTY
                    - TIME
                    - CMD
  /apps/applog:
    get:
      tags:
        - Apps
      summary: App's log
      description: This will fetch the logs of a fluxapp. **AppOwnerAbove**
      operationId: AppLogs
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name, or component_app
          example: myapp
        - in: query
          name: lines
          required: false
          schema:
            oneOf:
              - type: integer
                description: Number of lines to return
              - type: string
                description: Use all for full log (the default)
          example: 30
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: App's log
              example:
                status: success
                data: >-
                  21:12:16:****************************** FAHClient
                  ******************************

                  21:12:16:    Version: 7.6.9

                  21:12:16:     Author: Joseph Coffland
                  <joseph@cauldrondevelopment.com>

                  21:12:16:  Copyright: 2020 foldingathome.org

                  21:12:16:   Homepage: https://foldingathome.org/

                  21:12:16:       Date: Apr 17 2020

                  21:12:16:       Time: 18:11:26

                  21:12:16:   Revision: 398c2b17fa535e0cc6c9d10856b2154c32771646

                  21:12:16:     Branch: master

                  21:12:16:   Compiler: GNU 8.3.0

                  21:12:16:    Options: -std=c++11 -ffunction-sections
                  -fdata-sections -O3 -funroll-loops

                  21:12:16:             -fno-pie

                  21:12:16:   Platform: linux2 4.19.0-5-amd64

                  21:12:16:       Bits: 64

                  21:12:16:       Mode: Release

                  21:12:16:       Args:
                  --user=1CcoEkKQZcwUXPSps4bZJDjUM3mqe9bNXf --team=262156
                  --passkey=

                  21:12:16:             --gpu=false --smp=true --power=full
                  --gui-enabled=false --allow 0/0

                  21:12:16:             --web-allow 0/0

                  21:12:16:******************************** CBang
                  ********************************

                  21:12:16:       Date: Apr 17 2020

                  21:12:16:       Time: 18:10:13

                  21:12:16:   Revision: 2fb0be7809c5e45287a122ca5fbc15b5ae859a3b

                  21:12:16:     Branch: master

                  21:12:16:   Compiler: GNU 8.3.0

                  21:12:16:    Options: -std=c++11 -ffunction-sections
                  -fdata-sections -O3 -funroll-loops

                  21:12:16:             -fno-pie -fPIC

                  21:12:16:   Platform: linux2 4.19.0-5-amd64

                  21:12:16:       Bits: 64

                  21:12:16:       Mode: Release

                  21:12:16:******************************* System
                  ********************************
  /apps/appinspect:
    get:
      tags:
        - Apps
      summary: Info of the app
      description: Displays detailed info of the container. **AppOwnerAbove**
      operationId: AppInspect
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name, or component_app
          example: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      Id:
                        type: string
                        description: ID of the container
                      Created:
                        type: string
                        description: Date and time when container was created
                      Path:
                        type: string
                        description: Script path
                      Args:
                        type: array
                        items:
                          type: string
                          description: Runtime arguments
                      State:
                        type: object
                        properties:
                          Status:
                            type: string
                            description: State/status of container
                          Running:
                            type: boolean
                            description: Is container running
                          Paused:
                            type: boolean
                            description: Is container paused
                          Restarting:
                            type: boolean
                            description: Is container restarting
                          OOMKilled:
                            type: boolean
                            description: Has memory limit exceeded on container
                          Dead:
                            type: boolean
                            description: Is container dead
                          Pid:
                            type: integer
                            description: Process id
                          ExitCode:
                            type: integer
                            description: Exitcode number
                          Error:
                            type: string
                            description: Description of errors
                          StartedAt:
                            type: string
                            description: Start date and time
                          FinishedAt:
                            type: string
                            description: Finished date and time
                      Image:
                        type: string
                        description: Image id
                      ResolvConfPath:
                        type: string
                        description: Path of containers resolv.conf
                      HostnamePath:
                        type: string
                        description: Path of containers hostname
                      HostsPath:
                        type: string
                        description: Path of hosts
                      LogPath:
                        type: string
                        description: Path of log
                      Name:
                        type: string
                        description: Container name
                      RestartCount:
                        type: integer
                        description: Number of restarts
                      Driver:
                        type: string
                        description: Storage driver type
                      Platform:
                        type: string
                        description: OS type
                      MountLabel:
                        type: string
                        description: Container mount label
                      ProcessLabel:
                        type: string
                        description: Container process label
                      AppArmorProfile:
                        type: string
                        description: Application Armor profile
                      ExecIDs:
                        type: string
                        description: Exec ids of commands
                      HostConfig:
                        type: object
                        properties:
                          Binds:
                            type: array
                            items:
                              type: string
                              description: Path to bind directory
                          ContainerIDFile:
                            type: string
                            description: File id
                          LogConfig:
                            type: object
                            properties:
                              Type:
                                type: string
                                description: Log file format type
                              Config:
                                type: object
                                description: Configuration
                          NetworkMode:
                            type: string
                            description: Network mode
                          PortBindings:
                            type: object
                            properties:
                              7396/tcp:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    HostIp:
                                      type: string
                                      description: Ip of host
                                    HostPort:
                                      type: integer
                                      description: Port number
                          RestartPolicy:
                            type: object
                            properties:
                              Name:
                                type: string
                                description: Policy name
                              MaximumRetryCount:
                                type: integer
                                description: Max numbers of restarts
                          AutoRemove:
                            type: boolean
                            description: Is autoremove feature on
                          VolumeDriver:
                            type: string
                            description: Optional volume driver for the container
                          VolumesFrom:
                            type: string
                            description: Mount volumes from the specified container
                          CapAdd:
                            type: string
                            description: Add Linux capabilities
                          CapDrop:
                            type: string
                            description: Drop Linux capabilities
                          Capabilities:
                            type: string
                            description: OS capabilities
                          Dns:
                            type: string
                            description: Set custom DNS servers
                          DnsOptions:
                            type: string
                            description: Set DNS options
                          DnsSearch:
                            type: string
                            description: Set custom DNS search domains
                          ExtraHosts:
                            type: string
                            description: Extra hosts
                          GroupAdd:
                            type: string
                            description: Add additional groups to join
                          IpcMode:
                            type: string
                            description: IPC mode to use
                          Cgroup:
                            type: string
                            description: Cgroup for the container
                          Links:
                            type: string
                            description: Links to another container
                          OomScoreAdj:
                            type: integer
                            description: Tune host's OOM preferences (-1000 to 1000)
                          PidMode:
                            type: string
                            description: Pid to use
                          Privileged:
                            type: boolean
                            description: Extended privileges to this container
                          PublishAllPorts:
                            type: boolean
                            description: Publish all exposed ports to random ports
                          ReadonlyRootfs:
                            type: boolean
                            description: Mount the container’s root filesystem as read only
                          SecurityOpt:
                            type: string
                            description: Security Options
                          UTSMode:
                            type: string
                            description: UTS namespace to use
                          UsernsMode:
                            type: string
                            description: >-
                              Sets the usernamespace mode for the container when
                              usernamespace remapping option is enabled
                          ShmSize:
                            type: integer
                            description: Size of /dev/shm
                          Runtime:
                            type: string
                            description: Runtime to use for this container
                          ConsoleSize:
                            type: array
                            items:
                              type: string
                              description: >-
                                Initial console size, as an [height, width]
                                array. (Windows only)
                          Isolation:
                            type: string
                            description: >-
                              Isolation technology of the container. (Windows
                              only)
                          CpuShares:
                            type: integer
                            description: Value containing the container's CPU Shares
                          Memory:
                            type: integer
                            description: Memory limit in bytes
                          NanoCpus:
                            type: integer
                            description: CPU quota in units of 10<sup>-9</sup> CPUs
                          CgroupParent:
                            type: string
                            description: >-
                              Path to cgroups under which the container's cgroup
                              is created
                          BlkioWeight:
                            type: number
                            description: Block IO weight (relative weight)
                          BlkioWeightDevice:
                            type: string
                            description: Block IO weight (relative device weight)
                          BlkioDeviceReadBps:
                            type: string
                            description: Limit read rate (bytes per second)
                          BlkioDeviceWriteBps:
                            type: string
                            description: Limit write rate (bytes per second)
                          BlkioDeviceReadIOps:
                            type: string
                            description: Limit read rate (IO per second)
                          BlkioDeviceWriteIOps:
                            type: string
                            description: Limit write rate (IO per second)
                          CpuPeriod:
                            type: integer
                            description: The length of a CPU period in microseconds
                          CpuQuota:
                            type: integer
                            description: >-
                              Microseconds of CPU time that the container can
                              get in a CPU period
                          CpuRealtimePeriod:
                            type: integer
                            description: CPU real-time period limit in microseconds
                          CpuRealtimeRuntime:
                            type: integer
                            description: CPU real-time runtime limit in microseconds
                          CpusetCpus:
                            type: string
                            description: CPUs in which to allow execution
                          CpusetMems:
                            type: string
                            description: >-
                              Memory nodes (MEMs) in which to allow execution
                              (0-3, 0,1). Only effective on NUMA systems
                          Devices:
                            type: string
                            description: A list of devices to add to the container
                          DeviceCgroupRules:
                            type: string
                            description: A list of cgroup rules to apply to the container
                          DeviceRequests:
                            type: string
                            description: >-
                              A list of requests for devices to be sent to
                              device drivers
                          KernelMemory:
                            type: integer
                            description: Kernel memory limit
                          KernelMemoryTCP:
                            type: integer
                            description: Hard limit for kernel TCP buffer memory (in bytes)
                          MemoryReservation:
                            type: integer
                            description: Memory soft limit in bytes
                          MemorySwap:
                            type: integer
                            description: >-
                              Swap limit equal to memory plus swap: -1 to enable
                              unlimited swap
                          MemorySwappiness:
                            type: string
                            description: Container's memory swappiness behavior
                          OomKillDisable:
                            type: boolean
                            description: >-
                              Whether to disable OOM Killer for the container or
                              not
                          PidsLimit:
                            type: integer
                            description: Container's pids limit. Set -1 for unlimited.
                          Ulimits:
                            type: array
                            items:
                              type: object
                              description: >-
                                A list of resource limits to set in the
                                container
                              properties:
                                Name:
                                  type: string
                                Hard:
                                  type: integer
                                Soft:
                                  type: integer
                          CpuCount:
                            type: integer
                            description: The number of usable CPUs (Windows only)
                          CpuPercent:
                            type: integer
                            description: >-
                              The usable percentage of the available CPUs
                              (Windows only)
                          IOMaximumIOps:
                            type: integer
                            description: >-
                              Maximum IOps for the container system drive
                              (Windows only)
                          IOMaximumBandwidth:
                            type: integer
                            description: >-
                              Maximum IO in bytes per second for the container
                              system drive
                          MaskedPaths:
                            type: array
                            items:
                              type: string
                              description: >-
                                The list of paths to be masked inside the
                                container
                          ReadonlyPaths:
                            type: array
                            items:
                              type: string
                              description: >-
                                The list of paths to be set as read-only inside
                                the container
                      GraphDriver:
                        type: object
                        description: Information about a container's graph driver
                        properties:
                          Data:
                            type: object
                            properties:
                              LowerDir:
                                type: string
                              MergedDir:
                                type: string
                              UpperDir:
                                type: string
                              WorkDir:
                                type: string
                          Name:
                            type: string
                      Mounts:
                        $ref: '#/components/schemas/mounts'
                      Config:
                        type: object
                        properties:
                          Hostname:
                            type: string
                            description: >-
                              The hostname to use for the container, as a valid
                              RFC 1123 hostname
                          Domainname:
                            type: string
                            description: The domain name to use for the container
                          User:
                            type: string
                            description: >-
                              The user that commands are run as inside the
                              container
                          AttachStdin:
                            type: boolean
                            description: Whether to attach to stdin
                          AttachStdout:
                            type: boolean
                            description: Whether to attach to stdout
                          AttachStderr:
                            type: boolean
                            description: Whether to attach to stderr
                          ExposedPorts:
                            type: object
                            description: An object mapping ports to an empty object
                            additionalProperties:
                              type: object
                              default: {}
                          Tty:
                            type: boolean
                            description: >-
                              Attach standard streams to a TTY, including stdin
                              if it is not closed
                          OpenStdin:
                            type: boolean
                            description: Open stdin
                          StdinOnce:
                            type: boolean
                            description: Close stdin after one attached client disconnects
                          Env:
                            type: array
                            items:
                              type: string
                              description: >-
                                A list of environment variables to set inside
                                the container
                          Cmd:
                            type: array
                            items:
                              type: string
                              description: >-
                                Command to run specified as a string or an array
                                of strings
                          Image:
                            type: string
                            description: >-
                              The name of the image to use when creating the
                              container
                          Volumes:
                            type: object
                            description: >-
                              An object mapping mount point paths inside the
                              container to empty objects
                            additionalProperties:
                              type: object
                              default: {}
                          WorkingDir:
                            type: string
                            description: The working directory for commands to run in
                          Entrypoint:
                            type: array
                            items:
                              type: string
                              description: >-
                                The entry point for the container as a string or
                                an array of strings
                          OnBuild:
                            type: string
                            description: >-
                              ONBUILD metadata that were defined in the image's
                              Dockerfile
                          Labels:
                            type: object
                            description: User-defined key/value metadata
                            properties:
                              description:
                                type: string
                              maintainer:
                                type: string
                              repository:
                                type: string
                              version:
                                type: string
                      NetworkSettings:
                        type: object
                        description: >-
                          NetworkSettings exposes the network settings in the
                          API
                        properties:
                          Bridge:
                            type: string
                            description: Name of the network's bridge
                          SandboxID:
                            type: string
                            description: >-
                              SandboxID uniquely represents a container's
                              network stack
                          HairpinMode:
                            type: boolean
                            description: >-
                              Indicates if hairpin NAT should be enabled on the
                              virtual interface
                          LinkLocalIPv6Address:
                            type: string
                            description: IPv6 unicast address using the link-local prefix
                          LinkLocalIPv6PrefixLen:
                            type: integer
                            description: Prefix length of the IPv6 unicast address
                          Ports:
                            type: object
                            description: >-
                              PortMap describes the mapping of container ports
                              to host ports, using the container's port-number
                              and protocol as key. If a container's port is
                              mapped for multiple protocols, separate entries
                              are added to the mapping table.
                            additionalProperties:
                              type: array
                              items:
                                type: object
                                properties:
                                  HostIp:
                                    type: string
                                    description: >-
                                      Host IP address that the container's port
                                      is mapped to
                                  HostPort:
                                    type: string
                                    description: >-
                                      Host port number that the container's port
                                      is mapped to
                          SandboxKey:
                            type: string
                            description: SandboxKey identifies the sandbox
                          SecondaryIPAddresses:
                            type: array
                            items:
                              type: object
                              description: Address represents an IPv4 or IPv6 IP address
                              properties:
                                Addr:
                                  type: string
                                  description: IP address
                                PrefixLen:
                                  type: integer
                                  description: Mask length of the IP address
                          SecondaryIPv6Addresses:
                            type: array
                            items:
                              type: object
                              description: Address represents an IPv4 or IPv6 IP address
                              properties:
                                Addr:
                                  type: string
                                  description: IP address
                                PrefixLen:
                                  type: integer
                                  description: Mask length of the IP address
                          EndpointID:
                            type: string
                            description: >-
                              EndpointID uniquely represents a service endpoint
                              in a Sandbox
                          Gateway:
                            type: string
                            description: Gateway address for the default "bridge" network
                          GlobalIPv6Address:
                            type: string
                            description: >-
                              Global IPv6 address for the default "bridge"
                              network
                          GlobalIPv6PrefixLen:
                            type: integer
                            description: Mask length of the global IPv6 address
                          IPAddress:
                            type: string
                            description: IPv4 address for the default "bridge" network
                          IPPrefixLen:
                            type: integer
                            description: Mask length of the IPv4 address
                          IPv6Gateway:
                            type: string
                            description: IPv6 gateway address for this network
                          MacAddress:
                            type: string
                            description: >-
                              MAC address for the container on the default
                              "bridge" network
                          Networks:
                            type: object
                            description: >-
                              Information about all networks that the container
                              is connected to
                            properties:
                              fluxDockerNetwork:
                                $ref: '#/components/schemas/fluxnetwork'
              example:
                status: success
                data:
                  Id: >-
                    3cf131c856714g2s877r711931faa6622fe5aa9345fa392cbef54e5b9483c6a1
                  Created: '2020-05-16T16:40:36.11971926Z'
                  Path: /opt/fahclient/entrypoint.sh
                  Args:
                    - '--allow'
                    - 0/0
                    - '--web-allow'
                    - 0/0
                  State:
                    Status: paused
                    Running: true
                    Paused: true
                    Restarting: false
                    OOMkilled: false
                    Dead: false
                    Pid: 22001
                    ExitCode: 0
                    Error: ''
                    StartedAt: '2020-05-16T16:43:53.607846737Z'
                    FinishedAt: '2020-05-16T16:42:21.220760109Z'
                  Image: >-
                    sha256:8bd1fb3dd2de02f8d4403c657da6a19efeef9286981537b30d2a107079018402
                  ResolvConfPath: >-
                    /var/lib/docker/containers/3cf131c856714g2s877r711931faa6622fe5aa9345fa392cbef54e5b9483c6a1/resolv.conf
                  HostnamePath: >-
                    /var/lib/docker/containers/3cf131c856714g2s877r711931faa6622fe5aa9345fa392cbef54e5b9483c6a1/hostname
                  HostsPath: >-
                    /var/lib/docker/containers/3cf131c856714g2s877r711931faa6622fe5aa9345fa392cbef54e5b9483c6a1/hosts
                  LogPath: >-
                    /var/lib/docker/containers/3cf131c856714g2s877r711931faa6622fe5aa9345fa392cbef54e5b9483c6a1/3cf131c856714g2s877r711931faa6622fe5aa9345fa392cbef54e5b9483c6a1-json.log
                  Name: /fluxFoldingAtHome
                  RestartCount: 0
                  Driver: overlay2
                  Platform: linux
                  MountLabel: ''
                  ProcessLabel: ''
                  AppArmorProfile: docker-default
                  ExecIDs: null
                  HostConfig:
                    Binds:
                      - '/home/user/flux/ZelApps/fluxFoldingAtHome:/config'
                    ContainerIDFile: ''
                    LogConfig:
                      Type: json-file
                      Config: {}
                    NetworkMode: fluxDockerNetwork
                    PortBindings:
                      7396/tcp:
                        - HostIp: ''
                          HostPort: 30000
                    RestartPolicy:
                      Name: unless-stopped
                      MaximumRetryCount: 0
                    AutoRemove: false
                    VolumeDriver: ''
                    VolumesFrom: null
                    CapAdd: null
                    CapDrop: null
                    Capabilities: null
                    Dns: null
                    DnsOptions: null
                    DnsSearch: null
                    ExtraHosts: null
                    GroupAdd: null
                    IpcMode: private
                    Cgroup: ''
                    Links: null
                    OomScoreAdj: 0
                    PidMode: ''
                    Privileged: false
                    PublishAllPorts: false
                    SecurityOpt: null
                    UTSMode: ''
                    UsernsMode: ''
                    ShmSize: 67108864
                    Runtime: runc
                    ConsoleSize:
                      - 0
                      - 0
                    Isolation: ''
                    CpuShares: 0
                    Memory: 524288000
                    NanoCpus: 500000000
                    CgroupParent: ''
                    BlkioWeight: null
                    BlkioWeightDevice: null
                    BlkioDeviceReadBps: null
                    BlkioDeviceWriteBps: null
                    BlkioDeviceReadIOps: null
                    BlkioDeviceWriteIOps: null
                    CpuPeriod: 0
                    CpuQuota: 0
                    CpuRealtimePeriod: 0
                    CpuRealtimeRuntime: 0
                    CpusetCpus: ''
                    CpusetMems: ''
                    Devices: null
                    DeviceCgroupRules: null
                    DeviceRequests: null
                    KernelMemory: 0
                    KernelMemoryTCP: 0
                    MemoryReservation: 0
                    MemorySwap: -1
                    MemorySwappiness: null
                    OomKillDisable: false
                    PidsLimit: null
                    Ulimits:
                      - Name: nofile
                        Hard: 16384
                        Soft: 8192
                    CpuCount: 0
                    CpuPercent: 0
                    IOMaximumIOps: 0
                    IOMaximumBandwidth: 0
                    MaskedPaths:
                      - /proc/asound
                      - /proc/acpi
                      - /proc/kcore
                      - /proc/keys
                      - /proc/latency_stats
                      - /proc/timer_list
                      - /proc/timer_stats
                      - /proc/sched_debug
                      - /proc/scsi
                      - /sys/firmware
                    ReadonlyPaths:
                      - /proc/bus
                      - /proc/fs
                      - /proc/irq
                      - /proc/sys
                      - /proc/sysrq-trigger
                  GraphDriver:
                    Data:
                      LowerDir: >-
                        /var/lib/docker/overlay2/ddd72fca4ad0e998d127g587463fed04d0927e364d3e5627cdc1860752fdf3d963-init/diff:/var/lib/docker/overlay2/37f925753b6ff671205ad58326379748c1ec9124ada87615bd18a76d7f538e9f/diff:/var/lib/docker/overlay2/f09d20a3b3010cf03adc8a99651adc3cecd33ed8bce8915f1e29c266d78801c5/diff:/var/lib/docker/overlay2/1be67c986305e14d788b8787651cd7bb90b9398adaf94fe287dbf07661eaca0d/diff:/var/lib/docker/overlay2/66d7763a8fc1b81c5c63ab187db968b74t26e3bc2a25d2d8039cac0971fdb9ed/diff
                      MergedDir: >-
                        /var/lib/docker/overlay2/ddd72fca4ad0e998f98a48463fed04d0927e364d3e5627cdc1860752fdf3d963/merged
                      UpperDir: >-
                        /var/lib/docker/overlay2/ddd72fca4ad0e998d127g587463fed04d0927e364d3e5627cdc1860752fdf3d963/diff
                      WorkDir: >-
                        /var/lib/docker/overlay2/ddd72fca4ad0e998d127g587463fed04d0927e364d3e5627cdc1860752fdf3d963/work
                    Name: overlay2
                  Mounts:
                    - Type: bind
                      Source: /home/user/flux/ZelApps/fluxFoldingAtHome
                      Destination: /config
                      Mode: ''
                      RW: true
                      Propagation: rprivate
                  Config:
                    Hostname: 3cf131c85671
                    Domainname: ''
                    User: folding
                    AttachStdin: true
                    AttachStdout: true
                    AttachStderr: true
                    ExposedPorts:
                      36330/tcp: {}
                      7396/tcp: {}
                    Tty: false
                    OpenStdin: false
                    StdinOnce: false
                    Env:
                      - USER=1CcoEkKQZcwUXPSps4bZJDjUM3mqe9bNXf
                      - TEAM=262156
                      - ENABLE_GPU=false
                      - ENABLE_SMP=true
                      - >-
                        PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                      - POWER=full
                    Cmd:
                      - '--allow'
                      - 0/0
                      - '--web-allow'
                      - 0/0
                    Image: 'yurinnick/folding-at-home:latest'
                    Volumes: null
                    WorkingDir: /opt/fahclient
                    Entrypoint:
                      - /opt/fahclient/entrypoint.sh
                    OnBuild: null
                    Labels:
                      description: Unofficial Folding@Home image for CPU compute
                      maintainer: yurinnick
                      repository: 'https://github.com/yurinnick/folding-at-home-docker'
                      version: 7.6
                  NetworkSettings:
                    Bridge: ''
                    SandboxID: asdf1234hjkl5678
                    HairpinMode: false
                    LinkLocalIPv6Address: ''
                    LinkLocalIPv6PrefixLen: 0
                    Ports:
                      36330/tcp: null
                      7396/tcp:
                        - HostIp: 0.0.0.0
                          HostPort: 30000
                    SandboxKey: /var/run/docker/netns/asdf1234hjkl
                    SecondaryIPAddresses: null
                    SecondaryIPv6Addresses: null
                    EndpointID: ''
                    Gateway: ''
                    GlobalIPv6Address: ''
                    GlobalIPv6PrefixLen: ''
                    IPAddress: ''
                    IPPrefixLen: 0
                    IPv6Gateway: ''
                    MacAddress: ''
                    Networks:
                      fluxDockerNetwork:
                        IPAMConfig: null
                        Links: null
                        Aliases:
                          - 1278j8c85671
                        NetworkID: >-
                          1aae1cddff7c12875a99b0c0be79835d74f5e23cdafdaf3fb20addb782795c4
                        EndpointID: >-
                          a94a5e37af12398fce10312e2060891d026231e1270d5f4163d2bfb06fe32137
                        Gateway: 143.17.0.1
                        IPAddress: 143.17.0.1
                        IPPrefixLen: 16
                        IPv6Gateway: ''
                        GlobalIPv6Address: ''
                        GlobalIPv6PrefixLen: 0
                        MacAddress: '02.34:ac:11:01:06'
                        DriverOpts: null
  /apps/appstats:
    get:
      tags:
        - Apps
      summary: App stats based on resource usage
      description: >-
        The container's current resource usage, in the shape of Docker's
        container-stats object but **narrowed** to the values FluxOS keeps:
        CPU totals, memory usage, limit and page cache, block I/O, network
        bytes, the CPU allocation and disk usage. The reading is at most five
        seconds old, and callers arriving together share one.


        Not returned (they are in Docker's raw object, and were in this
        response before FluxOS 8.18.0): `read`, `preread`, `id`, `name`,
        `pids_stats`, `num_procs`, `storage_stats`, `percpu_usage`,
        `usage_in_kernelmode`, `usage_in_usermode`, `throttling_data`,
        `precpu_stats.online_cpus`, `max_usage`, `failcnt`, every
        `memory_stats.stats` key except `inactive_file`, every `blkio_stats`
        list except `io_service_bytes_recursive`, and the per-interface packet,
        error and dropped counters. With `percpu_usage` gone, read
        `online_cpus` directly rather than falling back to that array's length.


        `memory_stats.stats.inactive_file` is the page cache to subtract from
        `usage` as `docker stats` does (cgroup v1's `cache` is reported under
        this name). `blkio_stats.io_service_bytes_recursive` is one `read` and
        one `write` entry summed across devices, or `null`. `nanoCpus` is the
        CPU allocation (1000000000 = one core).


        `disk_stats.status` is `success` when every mount was measured,
        `partial` when some could not be (listed in `unmeasured`; `used` is
        then a floor, not a total), `error` when the reading failed (`message`
        says why and every size is 0), or `stale` when a failed reading was
        replaced by the last measured one. **AppOwnerAbove**
      externalDocs:
        url: 'https://docs.docker.com/engine/api/v1.40/#operation/ContainerStats'
      operationId: AppStats
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name, or component_app
          example: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    description: The reading, in Docker's container-stats shape, narrowed as described above
              example:
                status: success
                data:
                  cpu_stats:
                    cpu_usage:
                      total_usage: 7296404247
                    system_cpu_usage: 516655370000000
                    online_cpus: 2
                  precpu_stats:
                    cpu_usage:
                      total_usage: 7294264247
                    system_cpu_usage: 516653230000000
                  memory_stats:
                    usage: 15024128
                    limit: 209715200
                    stats:
                      inactive_file: 126976
                  blkio_stats:
                    io_service_bytes_recursive:
                      - op: read
                        value: 12288
                      - op: write
                        value: 4096
                  networks:
                    eth0:
                      rx_bytes: 4191270113
                      tx_bytes: 300477601
                  nanoCpus: 2000000000
                  disk_stats:
                    bind: 33554432
                    volume: 8388608
                    rootfs: 0
                    used: 41943040
                    status: success
  /apps/appchanges:
    get:
      tags:
        - Apps
      summary: Container changes
      description: >-
        Data of changes made to container. If no changes it will return a null
        response which is usually the case. **AppOwnerAbove**


        Kind values:

        - `0 = Modified`

        - `1 = Added`

        - `2 = Deleted`
      operationId: AppChanges
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name, or component_app
          example: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: Path to changed file
                        kind:
                          type: integer
                          enum:
                            - 0
                            - 1
                            - 2
                          description: Change type
              example:
                status: success
                data:
                  - null
  /apps/appexec:
    post:
      tags:
        - Apps
      summary: Run a command in the container
      description: >-
        Run new commands inside running containers. Asked of a node that does
        not run the application, it answers an error saying so. **AppOwnerAbove**
      operationId: AppExec
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                appname:
                  type: string
                  description: App name
                cmd:
                  type: array
                  items:
                    type: string
                    description: Command to run
                env:
                  type: array
                  items:
                    type: string
                    description: New list of environment variables(optional)
            example:
              appname: dibi-UND
              cmd:
               - date
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                description: Output depends on the command
              example: 'Sun Sep 20 10:18:38 UTC 2020'
  /apps/appremove:
    get:
      tags:
        - Apps
      summary: Uninstall application
      description: >-
        This will stop, clean data, close port, and remove the container.
        `appname` is the application name; component names (containing `_`)
        are refused. The response is a stream of status objects; with `global`
        it is a single envelope. **AppOwnerAbove**
      operationId: Appremove
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Name of the app
          example: myapp
        - in: query
          name: force
          required: false
          schema:
            type: boolean
            default: false
          description: >-
            Defaults to false. If true, forces removal without checking if the app exists.
        - in: query
          name: global
          required: false
          schema:
            type: boolean
            default: false
          description: >-
            Defaults to false (local removal). If true, removes the app from all nodes in the network.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/streamdata'
              example:
                status: Flux App myapp was successfully removed
  /apps/createfluxnetwork:
    get:
      tags:
        - Apps
      summary: Create flux network
      description: This will create flux network if none is detected. **AdminAndFluxTeam**
      operationId: createFluxNetwork
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Explanation of status
              example:
                status: success
                data: Flux Network already exists.
  /apps/rescanglobalappsinformation:
    get:
      tags:
        - Apps
      summary: Rescan and update global FluxApps info database
      description: >-
        Rescans global apps permanent messages since selected blockheight and
        updates global apps information database. **AdminAndFluxTeam**
      operationId: rescanGlobalAppsInformationAPI
      security:
        - FluxID: []
      parameters:
        - in: query
          name: blockheight
          required: true
          schema:
            type: integer
          description: Block height to rescan from
          example: 680000
        - in: query
          name: removelastinformation
          schema:
            type: boolean
            default: false
            enum:
              - true
              - false
          description: >-
            If set to true then before the actual rescan happens all global
            information specifications will be removed.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Rescan successful
  /apps/reindexglobalappsinformation:
    get:
      tags:
        - Apps
      summary: Reindex appsinformation collection and rebuild
      description: >-
        This will drop appslocations collection, recreate indexes, and
        rebuild incoming messages. **AdminAndFluxTeam**
      operationId: reindexGlobalAppsInformationAPI
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Reindex successful
  /apps/reindexglobalappslocation:
    get:
      tags:
        - Apps
      summary: Reindex appslocations collection and rebuild
      description: >-
        Function that drops information about running apps and rebuilds
        indexes. **AdminAndFluxTeam**
      operationId: reindexGlobalAppsLocationAPI
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Reindex successful
  /apps/checkdockerexistance:
    post:
      tags:
        - Apps
      summary: Checks Docker Hub for image
      description: >-
        **Deprecated.** No longer checks the registry; answers `deprecated` for
        any request that carries a repotag. **User**
      operationId: checkDockerAccessibility
      deprecated: true
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                repotag:
                  type: string
                  description: >-
                    Repotag of docker image in this format
                    `namespace/repository:tag`
            example:
              repotag: 'bharathshetty4/supermario:latest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: deprecated
  /apps/appregister:
    post:
      tags:
        - Apps
      summary: App registration
      description: >-
        Registers a new application on Flux: submits its signed specification for the network to deploy. **User**


        Note: Signature is following message signed in the format shown below

        - `this.updatetype + this.version + JSON.stringify(fluxAppSpecFormatted)
        + this.timestamp`


        Example:

        -
        `fluxappregister1{"version":7,"name":"blockbookneurai","description":"Blockbook for Neurai","owner":"1XcNTEsgVND4eb3bsVa2bjktnZZSruVct","compose":[{"name":"blockbookneurai","description":"Blockbook for Neurai","repotag":"runonflux/blockbook-docker:latest","ports":[38382,38383],"domains":["",""],"environmentParameters":["COIN=neurai","BLOCKBOOK_PORT=9168","BLOCKBOOKGIT_URL=https://github.com/NeuraiProject/blockbook"],"commands":[],"containerPorts":[9168,1337],"containerData":"/root","cpu":2.5,"ram":5000,"hdd":40,"tiered":false,"secrets":"","repoauth":""}],"instances":3,"contacts":[],"geolocation":[],"expire":22000,"nodes":[],"staticip":false}1692605469050`
      operationId: Appregister
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                type:
                  type: string
                  description: Message type
                version:
                  type: integer
                  description: Message version
                appSpecification:
                  $ref: '#/components/schemas/appspecification'
                timestamp:
                  type: integer
                  description: Current timestamp in epoch/unix
                signature:
                  type: string
                  description: Signature of data message you signed with FluxID.
            example:
              type: fluxappregister
              version: 1
              appSpecification:
                version: 7
                name: blockbookneurai
                description: Blockbook for Neurai
                owner: 1XcNTEsgVND4eb3bsVa2bjktnZZSruVct
                compose:
                  - name: blockbookneurai
                    description: Blockbook for Neurai
                    repotag: runonflux/blockbook-docker:latest
                    ports:
                      - 38382
                      - 38383
                    domains:
                      - ''
                      - ''
                    environmentParameters: []
                    commands: []
                    containerPorts:
                      - 9199
                      - 1337
                    containerData: /root
                    cpu: 2.5
                    ram: 5000
                    hdd: 40
                    tiered: false
                    secrets: ''
                    repoauth: ''
                instances: 3
                contacts: []
                geolocation: []
                expire: 22000
                nodes: []
                staticip: false
              timestamp: 1692605469050
              signature: II3DdnuO5j6qPVAjid4zac3QRUpvdwwSwCGYoHTQqozveFPnSAueeYW3oPN1+oN2pJSFnXgxeT/odisfGRF5uu0=
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Hash of entire message and will be stored for 1 hour
              example:
                status: success
                data: >-
                  a7a5b90b25ccc0a8379ec960c103103390369d1d6d18f88281372b944531dc23
  /apps/appupdate:
    post:
      tags:
        - Apps
      summary: App update
      description: >-
        This call is to provide required info to update app on Flux. **User**


        Note: Signature is following message signed in the format shown below

        - `this.updatetype + this.version + JSON.stringify(fluxAppSpecFormatted)
        + this.timestamp`


        Example:

        -
        `fluxappupdate1{"version":7,"name":"blockbookneurai","description":"Blockbook for Neurai","owner":"1HWjQ9S3MyzV6EbtDMEkpHm31parya412N","compose":[{"name":"blockbookneurai","description":"Blockbook for Neurai","repotag":"runonflux/blockbook-docker:latest","ports":[38382,38383],"domains":["",""],"environmentParameters":["COIN=neurai","BLOCKBOOK_PORT=9168","BLOCKBOOKGIT_URL=https://github.com/NeuraiProject/blockbook"],"commands":[],"containerPorts":[9168,1337],"containerData":"/root","cpu":2.5,"ram":5000,"hdd":40,"tiered":false,"secrets":"","repoauth":""}],"instances":3,"contacts":[],"geolocation":[],"expire":22000,"nodes":[],"staticip":false}1692697789387`
      operationId: updateAppGlobalyApi
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                appSpecification:
                  $ref: '#/components/schemas/appspecification'
                timestamp:
                  type: integer
                  description: Current timestamp in epoch/unix
                signature:
                  type: string
                  description: Signature of data message you signed with FluxID.
                type:
                  type: string
                  description: Message type
                version:
                  type: integer
                  description: Message version
            example:
              type: fluxappupdate
              version: 1
              appSpecification:
                version: 7
                name: blockbookneurai
                description: Blockbook for Neurai
                owner: 1HWjQ9S3MyzV6EbtDMEkpHm31parya412N
                compose:
                  - name: blockbookneurai
                    description: Blockbook for Neurai
                    repotag: runonflux/blockbook-docker:latest
                    ports:
                      - 38382
                      - 38383
                    domains:
                      - ''
                      - ''
                    environmentParameters:
                      - COIN=neurai
                      - BLOCKBOOK_PORT=9168
                      - BLOCKBOOKGIT_URL=https://github.com/NeuraiProject/blockbook
                    commands: []
                    containerPorts:
                      - 9168
                      - 1337
                    containerData: /root
                    cpu: 2.5
                    ram: 5000
                    hdd: 40
                    tiered: false
                    secrets: ''
                    repoauth: ''
                instances: 3
                contacts: []
                geolocation: []
                expire: 22000
                nodes: []
                staticip: false
              timestamp: 1692697789387
              signature: HxtjvY3/CSoKxlaAZ4seno5qNYSZLVQ30IEqC1pw8644YjtN0H5IC131XaPkTrptUmxTHCVxE/gIQZsld4lWX54=
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Hash of entire message and will be stored for 1 hour
              example:
                status: success
                data: >-
                  a7a5b90b25ccc0a8379ec960c103103390369d1d6d18f88281372b944531dc23
  /apps/deploymentinformation:
    get:
      tags:
        - Apps
      summary: Deployment information
      description: >-
        This will return deployment information. **Public**
      operationId: getDeploymentInformatio
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  price:
                    - height: -1
                      cpu: 3
                      ram: 1
                      hdd: 0.5
                      minPrice: 1
                      port: 2
                      scope: 6
                      staticip: 3
                    - height: 983000
                      cpu: 0.3
                      ram: 0.1
                      hdd: 0.05
                      minPrice: 0.1
                      port: 2
                      scope: 6
                      staticip: 3
                    - height: 1004000
                      cpu: 0.06
                      ram: 0.02
                      hdd: 0.01
                      minPrice: 0.01
                      port: 2
                      scope: 6
                      staticip: 3
                    - height: 1288000
                      cpu: 0.15
                      ram: 0.05
                      hdd: 0.02
                      minPrice: 0.01
                      port: 2
                      scope: 6
                      staticip: 3
                  appSpecsEnforcementHeights:
                    '1': 0
                    '2': 0
                    '3': 983000
                    '4': 1004000
                    '5': 1142000
                    '6': 1300000
                    '7': 1420000
                  address: t3aGJvdtd8NR6GrnqnRuVEzH6MbrXuJFLUX
                  portMin: 1
                  portMax: 65535
                  enterprisePorts:
                    - 0-1023
                    - 8080
                    - 8081
                    - 8443
                    - 25565
                    - 6667
                  bannedPorts:
                    - 16100-16299
                    - 26100-26299
                    - 30000-30099
                    - 8384
                    - 27017
                    - 22
                    - 23
                    - 25
                    - 3389
                    - 5900
                    - 5800
                    - 161
                    - 512
                    - 513
                    - 5901
                    - 3388
                    - 4444
                    - 123
                  maxImageSize: 2000000000
                  minimumInstances: 3
                  maximumInstances: 100
                  blocksLasting: 22000
                  minBlocksAllowance: 5000
                  maxBlocksAllowance: 264000
                  blocksAllowanceInterval: 1000
  /apps/enterprisenodes:
    get:
      tags:
        - Apps
      summary: List of enterprise nodes
      description: >-
        This will return a list of enterprise nodes. **Public**
      operationId: getEnterpriseNodes
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  - tier: STRATUS
                    payment_address: t3c4EfxLoXXSRZCRnPRF3RpjPi9mBzF5yoJ
                    txhash: 9c271f03885a58b91b0529e3c59744397898b91a36bc129395244dd714a49247
                    outidx: 0
                    pubkey: 045bd4f81d7bda582141793463edb58e0f3228a873bd6b6680b78586db2969f51dfeda672eae65e64ca814316f77557012d02c73db7876764f5eddb6b6d9d02b5b
                    ip: 65.21.76.151
                    collateralPoints: 30
                    maturityPoints: 500
                    pubKeyPoints: 500
                    enterprisePoints: 2000
                    enterpriseApps: 0
                    score: 3030
                  - tier: STRATUS
                    payment_address: t3c4EfxLoXXSRZCRnPRF3RpjPi9mBzF5yoJ
                    txhash: 2b9f7c3f9d537c931345a095de6083fc4d90abdaeafad4920aa7efa61a046a03
                    outidx: 0
                    pubkey: 045bd4f81d7bda582141793463edb58e0f3228a873bd6b6680b78586db2969f51dfeda672eae65e64ca814316f77557012d02c73db7876764f5eddb6b6d9d02b5b
                    ip: 135.181.62.100
                    collateralPoints: 30
                    maturityPoints: 500
                    pubKeyPoints: 500
                    enterprisePoints: 2000
                    enterpriseApps: 0
                    score: 3030
                  - tier: CUMULUS
                    payment_address: t1dQ3eY9fk2VyLKMsMSRDsKhV6vQGuozvtU
                    txhash: 00eac3603342d31a57aa37a64bd4204ecc3ea0abd82e6d848b7d6e30c0c54af0
                    outidx: 0
                    pubkey: 043b7284fe091ce9fc5bfc2e4e898a944d116ec3bbd1cb1669f6a4ade792175216e348c48afb300d01e2d9e0ced10ad934341a11d4cc866ca2f8839a558ca558ad
                    ip: 71.203.179.136
                    collateralPoints: 2
                    maturityPoints: 0
                    pubKeyPoints: 2
                    enterprisePoints: 0
                    enterpriseApps: 0
                    score: 4
  /apps/requestmessage/{hash}:
    get:
      tags:
        - Apps
      summary: Request application message hash.
      description: >-
        This will request application message hash. **AdminAndFluxTeam**
      operationId: getRequestmessage
      security:
        - FluxID: []
      parameters:
        - in: path
          name: hash
          required: true
          schema:
            type: string
          description: 'Application hash'
          example: 'bf3d860a1d5d0379519afc7da441fb56c688f83e528162d5f6825c05f6c27e7a'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  message: 'Application hash bf3d860a1d5d0379519afc7da441fb56c688f83e528162d5f6825c05f6c27e7a requested from the network'
  /apps/checkhashes:
    get:
      tags:
        - Apps
      summary: Request check for missing application message.
      description: >-
        This will tigger check for misssing application messages. **AdminAndFluxTeam**
      operationId: getCheckhashes
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  message: 'Running sync on missing application messages'
  /apps/latestspecificationversion:
    get:
      tags:
        - Apps
      summary: Get latest application specification version
      description: Get the latest version of application specifications available. **Public**
      operationId: getLatestApplicationSpecificationAPI
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: integer
                    description: Latest specification version
              example:
                status: success
                data: 8
  /apps/updatetolatestspecs/{appname}:
    get:
      tags:
        - Apps
      summary: Update app to latest specifications
      description: >-
        Returns the application's stored specification converted to the latest
        specification format (nothing is stored), for the owner to sign as an
        update. For an enterprise application an `enterprise-key` header is
        mandatory, and `enterprise` comes back encrypted to the session key it
        carries, with `compose` and `contacts` emptied. Refused while the daemon
        is not synced.
        **AppOwner**
      operationId: updateApplicationSpecificationAPI
      security:
        - FluxID: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application to update
          example: electrumxtest
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    description: The specification in the latest format
              example:
                status: success
                data:
                  version: 8
                  name: electrumxtest
                  owner: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
                  instances: 3
                  compose: []
  /apps/apporiginalowner/{appname}:
    get:
      tags:
        - Apps
      summary: Get application original owner
      description: Get the original owner of a specific application. **Public**
      operationId: getApplicationOriginalOwner
      security: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application
          example: electrumxtest
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: Original owner FluxID/address
              example:
                status: success
                data: '1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC'
  /apps/installinglocation/{appname}:
    get:
      tags:
        - Apps
      summary: Get app installing location
      description: Get the location where a specific app is currently being installed. **Public**
      operationId: getAppInstallingLocation
      security: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application
          example: electrumxtest
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        ip:
                          type: string
                          description: IP address of node installing the app
                        name:
                          type: string
                          description: Application name
                        broadcastedAt:
                          type: string
                          format: date-time
                          description: When installation started
                        expireAt:
                          type: string
                          format: date-time
                          description: When installation expires
                        hash:
                          type: string
                          description: Installation hash
              example:
                status: success
                data:
                  - ip: '192.168.1.100'
                    name: 'electrumxtest'
                    broadcastedAt: '2023-11-15T10:00:00.000Z'
                    expireAt: '2023-11-15T11:00:00.000Z'
                    hash: 'abc123def456'
  /apps/installinglocations:
    get:
      tags:
        - Apps
      summary: Get all apps installing locations
      description: Get locations where all apps are currently being installed. **Public**
      operationId: getAppsInstallingLocations
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        ip:
                          type: string
                          description: IP address of node
                        name:
                          type: string
                          description: Application name
                        broadcastedAt:
                          type: string
                          format: date-time
                        expireAt:
                          type: string
                          format: date-time
                        hash:
                          type: string
              example:
                status: success
                data:
                  - ip: '192.168.1.100'
                    name: 'app1'
                    broadcastedAt: '2023-11-15T10:00:00.000Z'
                    expireAt: '2023-11-15T11:00:00.000Z'
                    hash: 'abc123'
  /apps/installingerrorslocation/{appname}:
    get:
      tags:
        - Apps
      summary: Get app installation errors location
      description: Get the location where a specific app had installation errors. **Public**
      operationId: getAppInstallingErrorsLocation
      security: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application
          example: electrumxtest
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        ip:
                          type: string
                          description: IP address of node with errors
                        name:
                          type: string
                          description: Application name
                        broadcastedAt:
                          type: string
                          format: date-time
                        expireAt:
                          type: string
                          format: date-time
                        hash:
                          type: string
                          description: Error hash
                        error:
                          type: string
                          description: Error message
              example:
                status: success
                data:
                  - ip: '192.168.1.100'
                    name: 'electrumxtest'
                    error: 'Failed to pull Docker image'
  /apps/installingerrorslocations:
    get:
      tags:
        - Apps
      summary: Get all apps installation errors locations
      description: Get locations where all apps had installation errors. **Public**
      operationId: getAppsInstallingErrorsLocations
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        ip:
                          type: string
                        name:
                          type: string
                        error:
                          type: string
                        broadcastedAt:
                          type: string
                          format: date-time
                        expireAt:
                          type: string
                          format: date-time
                        hash:
                          type: string
              example:
                status: success
                data:
                  - ip: '192.168.1.100'
                    name: 'app1'
                    error: 'Installation timeout'
  /apps/whitelistedrepositories:
    get:
      tags:
        - Apps
      summary: Get whitelisted repositories
      description: >-
        **Deprecated.** The whitelist is retired; always returns an empty list.
        **Public**
      operationId: whitelistedRepositories
      deprecated: true
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: string
                      description: Whitelisted repository URL
              example:
                status: success
                data: []
  /apps/verifyappregistrationspecifications:
    post:
      tags:
        - Apps
      summary: Verify app registration specifications
      description: >-
        Verify and format application registration specifications. The body is
        the application specification itself, read raw (send it as
        `text/plain`). Refused while the daemon is not synced; also runs the
        placement-feasibility and name-conflict checks, and returns an
        enterprise application with `compose` and `contacts` emptied. **Public**
      operationId: verifyAppRegistrationParameters
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              $ref: '#/components/schemas/appspecification'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    description: Formatted and verified app specifications
              example:
                status: success
                data:
                  version: 4
                  name: 'myapp'
                  description: 'My application'
                  owner: '1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC'
  /apps/verifyappupdatespecifications:
    post:
      tags:
        - Apps
      summary: Verify app update specifications
      description: >-
        Verify and format application update specifications. The body is the
        application specification itself, read raw (send it as `text/plain`).
        **Public**
      operationId: verifyAppUpdateParameters
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              $ref: '#/components/schemas/appspecification'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    description: Formatted and verified app update specifications
              example:
                status: success
                data:
                  version: 5
                  name: 'myapp'
                  description: 'Updated application'
  /apps/getappspecsusdprice:
    get:
      tags:
        - Apps
      summary: Get application specifications USD price
      description: Get the USD price for application specifications and resource usage. **Public**
      operationId: getAppSpecsUSDPrice
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    description: The node's `fluxapps.usdprice` pricing configuration
                    properties:
                      height:
                        type: integer
                        description: Height from which this price set is valid
                      cpu:
                        type: number
                        description: USD per 0.1 CPU core
                      ram:
                        type: number
                        description: USD per 100 MB RAM
                      hdd:
                        type: number
                        description: USD per GB storage
                      minPrice:
                        type: number
                        description: Minimum price of a registration or update
                      port:
                        type: number
                        description: Additional price per enterprise port
                      scope:
                        type: number
                        description: Additional price for targeting specific nodes or private images
                      staticip:
                        type: number
                        description: Additional price for targeting nodes with a static IP
                      fluxmultiplier:
                        type: number
                        description: Multiplier applied when paying in FLUX (1 means no discount)
                      multiplier:
                        type: number
                        description: Global price multiplier
                      minUSDPrice:
                        type: number
                        description: Minimum USD price payable by card or PayPal
              example:
                status: success
                data:
                  height: -1
                  cpu: 0.15
                  ram: 0.05
                  hdd: 0.02
                  minPrice: 0.01
                  port: 2
                  scope: 4
                  staticip: 2
                  fluxmultiplier: 0.95
                  multiplier: 1
                  minUSDPrice: 0.99
  /apps/applogpolling/{appname}:
    get:
      tags:
        - Apps
      summary: Poll application logs
      description: Poll application logs with real-time updates. **AppOwnerAbove**
      operationId: appLogPolling
      security:
        - FluxID: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application
          example: electrumxtest
        - name: since
          in: query
          required: false
          schema:
            type: string
          description: Only lines after this time (anything Date.parse accepts); ignored when `cursor` is sent.
        - in: query
          name: lineCount
          required: false
          schema:
            type: string
            default: all
          description: Most recent lines to return, or `all` (default `all`).
          example: '100'
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: Opaque cursor from a previous response; resumes where that poll stopped
          example: eyJwb3MiOjQyfQ
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: Not wrapped in `data` — the fields sit beside `status`.
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  logs:
                    type: array
                    items:
                      type: string
                  lineCount:
                    description: The line limit applied (`all` or a number)
                  logCount:
                    type: integer
                  sinceTimestamp:
                    type: string
                  cursor:
                    type: string
                    nullable: true
                    description: Position reached; send it back as `cursor` to receive only newer lines
                  rolledOver:
                    type: boolean
                    description: The line the cursor pointed at was rotated away by Docker; lines in between are lost
                  skipped:
                    type: boolean
                    description: The cursor was further back than one read reaches; it was moved forward and the lines in between were not delivered
                  truncated:
                    type: boolean
                    description: The log holds more than the line limit (reported only when no cursor was sent)
              example:
                status: success
                logs:
                  - '2026-10-01T10:00:00.000000000Z Application started'
                lineCount: 100
                logCount: 1
                sinceTimestamp: ''
                cursor: eyJwb3MiOjQyfQ
                rolledOver: false
                skipped: false
                truncated: true
  /apps/appmonitorstream/{appname}:
    get:
      tags:
        - Apps
      summary: Stream application monitoring data
      description: >-
        **Removed.** Streaming monitoring data is no longer supported and this
        endpoint always answers **HTTP 200** with `status: error` and
        `data.code: 410`. Read stored samples with `GET /apps/appmonitor`
        instead. **Public**
      operationId: appMonitorStream
      deprecated: true
      security: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application
          example: electrumxtest
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: error
                data:
                  code: 410
                  name: Deprecated
                  message: The stats stream has been removed. Poll /apps/appstats for a live reading or /apps/appmonitor for the collected series.
  /apps/testappinstall/{appname}:
    get:
      tags:
        - Apps
      summary: Test application installation
      description: >-
        Test if an application can be installed without actually installing it.
        Any logged-in user may test a pending registration by passing its
        temporary-message hash as `appname`; testing an application already
        known to the network (by name) requires the Flux Team. The response is
        streamed, like `GET /apps/installapplocally/{appname}`; on a node whose
        architecture the images do not support, it reports that validation
        passed and the installation was skipped.
        **User** (a known application: **FluxTeam**)
      operationId: testAppInstall
      security:
        - FluxID: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application to test
          example: electrumxtest
      responses:
        '200':
          description: Stream of test-installation progress objects
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/streamdata'
              example:
                status: 'Checking architecture compatibility...'
        '503':
          description: >-
            Refused before the handler runs: the node is still reconciling its
            applications after boot (Retry-After 15), or has not yet obtained the
            network policy — the signed bundle carrying the blocked-repository
            list — so it cannot establish that an image is allowed (Retry-After 30).
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
              example:
                status: error
                data:
                  code: 503
                  name: ServiceUnavailable
                  message: Node has not yet obtained the network policy
  /apps/installapplocally/{appname}:
    get:
      tags:
        - Apps
      summary: Install application locally
      description: >-
        Installs a specific application locally on this node. The response is
        **streamed**: a sequence of JSON objects is written as the install
        progresses — image pull progress, volume creation, container start — and
        the connection closes when the install finishes or fails. A failure after
        the stream has started is written into the stream rather than signalled by
        the HTTP status, so read the objects rather than the status code.


        Any logged-in user may install a pending registration by passing its
        temporary-message hash as `appname`; installing an application already
        known to the network (by name) requires the Flux Team. Refused while
        another application on this node is undergoing an operation.
        **User** (a known application: **FluxTeam**)
      operationId: installAppLocally
      security:
        - FluxID: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application to install
          example: electrumxtest
      responses:
        '200':
          description: Stream of installation progress objects
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/streamdata'
              example:
                status: 'Downloading image'
                progressDetail:
                  current: 41943040
                  total: 104857600
                progress: '[=========>          ]  40MB/100MB'
                id: 6a1f8b3c9d2e
        '503':
          description: >-
            Refused before the handler runs: the node is still reconciling its
            applications after boot (Retry-After 15), or has not yet obtained the
            network policy — the signed bundle carrying the blocked-repository
            list — so it cannot establish that an image is allowed (Retry-After 30).
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
              example:
                status: error
                data:
                  code: 503
                  name: ServiceUnavailable
                  message: Node has not yet obtained the network policy
  /apps/redeploy/{appname}:
    get:
      tags:
        - Apps
      summary: Redeploy application
      description: >-
        Redeploy an existing application on this node. Component names
        (containing `_`) are refused, and the redeploy is skipped with a warning
        while a restore runs for the application. The response is streamed;
        with `global` it is a single envelope (`<app> queried for global
        hard|soft redeploy`). **AppOwnerAbove**
      operationId: redeployAPI
      security:
        - FluxID: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application to redeploy
        - name: force
          in: query
          required: false
          schema:
            type: boolean
            default: false
          description: Hard redeploy — removes the application's volumes and data on this node
        - name: global
          in: query
          required: false
          schema:
            type: boolean
            default: false
          description: Redeploy globally across network
      responses:
        '200':
          description: >-
            A stream of JSON objects written as the work progresses — progress
            objects and status envelopes — ending when it finishes or fails. A
            failure after the stream has started is written into it rather than
            signalled by the HTTP status.
          content:
            application/json:
              schema:
                type: object
              example:
                status: success
                data:
                  message: Application softly removed. Awaiting installation...
        '503':
          description: >-
            Refused before the handler runs: the node is still reconciling its
            applications after boot (Retry-After 15), or has not yet obtained the
            network policy — the signed bundle carrying the blocked-repository
            list — so it cannot establish that an image is allowed (Retry-After 30).
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
              example:
                status: error
                data:
                  code: 503
                  name: ServiceUnavailable
                  message: Node has not yet obtained the network policy
  /apps/reconstructhashes:
    get:
      tags:
        - Apps
      summary: Reconstruct application message hashes
      description: Reconstruct the application message hash collection. **AdminAndFluxTeam**
      operationId: reconstructAppMessagesHashCollectionAPI
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                        description: Reconstruction status
              example:
                status: success
                data:
                  message: 'Hash collection reconstruction initiated'
  /apps/startmonitoring/{appname}:
    get:
      tags:
        - Apps
      summary: Start application monitoring
      description: >-
        **Removed.** Monitoring is no longer started or stopped per application —
        this endpoint always answers **HTTP 200** with `status: error` and
        `data.code: 410`. Monitoring runs for every installed application; read
        it with `GET /apps/appmonitor`.
        **Public**
      operationId: startAppMonitoringAPI
      deprecated: true
      security: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application to monitor
          example: electrumxtest
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                        description: Monitoring status
              example:
                status: error
                data:
                  code: 410
                  name: Deprecated
                  message: Application monitoring is managed by the node and runs for every app. This endpoint no longer has any effect and will be removed.
  /apps/stopmonitoring/{appname}:
    get:
      tags:
        - Apps
      summary: Stop application monitoring  
      description: >-
        **Removed.** Monitoring is no longer started or stopped per application —
        this endpoint always answers **HTTP 200** with `status: error` and
        `data.code: 410`. **Public**
      operationId: stopAppMonitoringAPI
      deprecated: true
      security: []
      parameters:
        - name: appname
          in: path
          required: true
          schema:
            type: string
          description: Name of the application
          example: electrumxtest
        - name: deletedata
          in: query
          required: false
          schema:
            type: boolean
            default: false
          description: Whether to delete monitoring data
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                        description: Stop monitoring status
              example:
                status: error
                data:
                  code: 410
                  name: Deprecated
                  message: Application monitoring is managed by the node and runs for every app. This endpoint no longer has any effect and will be removed.
  /apps/getpublickey:
    post:
      tags:
        - Apps
      summary: Get public key for app operations
      description: >-
        The public key an enterprise application's owner encrypts the
        enterprise content of that app to. ArcaneOS nodes only; refused while
        the daemon is not synced. The body is read raw, so send it as
        `text/plain` (an `application/json` body is consumed before the handler
        reads it). **User**
      operationId: getPublicKey
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              required:
                - owner
                - name
              properties:
                owner:
                  type: string
                  description: App owner FluxID
                name:
                  type: string
                  description: Application name
            example:
              owner: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
              name: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
                    description: The public key to encrypt the application's enterprise content to
              example:
                status: success
                data: 04a1f3d...
  #Explorer               
  /explorer/utxo:
    get:
      tags:
        - Explorer
      summary: View utxo history
      description: View unspent transaction outputs of selected address. **Public**
      operationId: explorerGetAddressUtxos
      security: []
      parameters:
        - in: query
          name: address
          required: true
          schema:
            type: string
          description: Flux address to look up utxo's
          example: t1edbnsYnGXxyYNt4kJJPhZktDWNaKwkznY
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        txid:
                          type: string
                          description: The transaction id
                        vout:
                          type: integer
                          description: Output index within the transaction
                        height:
                          type: integer
                          description: Block height of transaction
                        address:
                          type: string
                          description: Flux address
                        satoshis:
                          type: integer
                          description: Value of Flux in satoshi
                        scriptPubKey:
                          type: string
                          description: Script public key
                        coinbase:
                          type: boolean
                          description: If coinbase or not. Present only when the daemon runs without insightexplorer.
                        confirmations:
                          type: integer
                          description: Present only when the daemon runs with insightexplorer=1 (instead of coinbase)
              example:
                status: success
                data:
                  - txid: >-
                      dc7113577d1ccf539032c4e0155a3099fdc227d8c26ee0191628735c2b4cf4dc
                    vout: 2
                    height: 288132
                    address: t1edbnsYnGXxyYNt4kJJPhZktDWNaKwkznY
                    satoshis: 10011373238
                    scriptPubKey: 76a914e3b4a37c811d29cead34b20a67baeed714b415e388ac
                    coinbase: false
                  - txid: >-
                      f9315e66c62bd356973d3fd63ace4d6327dbcf26a4d084d50ff3ec0441577196
                    vout: 0
                    height: 288287
                    address: t1edbnsYnGXxyYNt4kJJPhZktDWNaKwkznY
                    satoshis: 10315062273
                    scriptPubKey: 76a914e3b4a37c811d29cead34b20a67baeed714b415e388ac
                    coinbase: false
  /explorer/transactions:
    get:
      tags:
        - Explorer
      summary: View transaction history
      description: View transaction history of selected address. **Public**
      operationId: getAddressTransactions
      security: []
      parameters:
        - in: query
          name: address
          required: true
          schema:
            type: string
          description: Flux address to look up tx history
          example: t1edbnsYnGXxyYNt4kJJPhZktDWNaKwkznY
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    description: Transactions of the address, newest first
                    items:
                      type: object
                      properties:
                        txid:
                          type: string
                          description: The transaction id
              example:
                status: success
                data:
                  - txid: 2dbd48d70af588b3781acc2763fab1d2515b3d508d89e4cd20e34f911cd9085a
                  - txid: 1ffe6f5b8b15fbcbd5dfc6b9f0f1d6fc02aae4434bbf45705fa96ad56c47d6e1
                  - txid: 5120e5e0a4129f26ccd630710697219f482148aabddf47f2e0ebc212e3e18cbd
  /explorer/balance:
    get:
      tags:
        - Explorer
      summary: View balance
      description: View balance of selected address. **Public**
      operationId: explorerGetAddressBalance
      security: []
      parameters:
        - in: query
          name: address
          required: true
          schema:
            type: string
          description: Flux address to look up balance
          example: t1edbnsYnGXxyYNt4kJJPhZktDWNaKwkznY
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: integer
                    description: Flux balance in satoshi value
              example:
                status: success
                data: 7089180145154
  /explorer/scannedheight:
    get:
      tags:
        - Explorer
      summary: View scanned block height
      description: View scanned block height on the explorer that it has synced. **Public**
      operationId: getScannedHeight
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      generalScannedHeight:
                        type: integer
                        description: Block height
              example:
                status: success
                data:
                  generalScannedHeight: 593977
  /explorer/issynced:
    get:
      tags:
        - Explorer
      summary: Check if explorer is synced
      description: Check if the explorer is fully synchronized with the blockchain. **Public**
      operationId: isExplorerSynced
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: boolean
                    description: >-
                      True when the last block the explorer processed had fewer
                      than 2 confirmations (the explorer is at the chain tip);
                      false until a block has been processed.
              example:
                status: success
                data: true
  /explorer/reindex:
    get:
      tags:
        - Explorer
      summary: Reindex collection
      description: Drop Flux collection and recreate it. **AdminAndFluxTeam**
      operationId: reindexExplorer
      security:
        - FluxID: []
      parameters:
        - in: query
          name: rescanapps
          required: false
          schema:
            type: boolean
            default: false
          description: >-
            Also drop and rebuild the global application collections. The
            handler's query fallback reads `rescanapps` (not `reindexapps`); the
            path form is `/explorer/reindex/true`.
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Explorer database reindex initiated
  /explorer/restart:
    get:
      tags:
        - Explorer
      summary: Restart block processing
      description: Restarts Flux collection. **AdminAndFluxTeam**
      operationId: restartBlockProcessing
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Block processing initiated
  /explorer/stop:
    get:
      tags:
        - Explorer
      summary: Stops block processing
      description: Stops Flux collection. **AdminAndFluxTeam**
      operationId: stopBlockProcessing
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Block processing is stopped
  /explorer/rescan:
    get:
      tags:
        - Explorer
      summary: Rescan explorer
      description: Rescan explorer from selected block height. **AdminAndFluxTeam**
      operationId: rescanExplorer
      security:
        - FluxID: []
      parameters:
        - in: query
          name: blockheight
          required: true
          schema:
            type: integer
          description: Block height to start rescan from
          example: 585000
        - in: query
          name: rescanapps
          required: false
          schema:
            type: boolean
            default: false
          description: Also roll back the global application messages and information above `blockheight`
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Explorer rescan from blockheight 585000 initiated
  #Operations (long-running jobs)
  /apps/operations/{jobId}:
    get:
      tags:
        - Apps
      summary: Poll a long-running operation
      description: >-
        The single status resource for every long-running operation a node
        accepts. Endpoints that start work (the volume file operations, for
        example) answer `202 Accepted` with a `jobId`, a `Location` header
        pointing here and an `Operation-Id` header; this endpoint owns the
        polling contract.


        A running operation answers `200` with a non-terminal body and a
        `Retry-After` header. **Completion is read from the `status` field, never
        inferred from the HTTP code** — a failed operation is still a successful
        poll. Terminal statuses are `Succeeded`, `Failed`, `Canceled` and
        `Evicted` (the node took the work away — neither the caller's request nor
        their input was at fault).


        Unknown, expired and not-yours are one answer (`404`): a `jobId` must not
        tell a caller whether someone else has an operation running. Operations
        registered with an owner are readable only by that FluxID; operations
        registered without one treat the `jobId` itself as the capability.
        **Public** (the `jobId` is the capability)
      operationId: getOperation
      security: []
      parameters:
        - in: path
          name: jobId
          required: true
          schema:
            type: string
          description: Operation id, as returned by the endpoint that started the work
          example: op_2f8f1a1c-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        - in: query
          name: sinceSeq
          required: false
          schema:
            type: integer
            minimum: 0
          description: >-
            How far through an operation's line-numbered output the caller has
            already read. Anything that is not a non-negative whole number is
            treated as no cursor at all.
          example: 120
      responses:
        '200':
          description: Operation state
          headers:
            Retry-After:
              description: Seconds to wait before polling again (running operations only)
              schema:
                type: integer
            Expires:
              description: When a terminal operation will be pruned from the registry
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/operation'
              example:
                status: success
                data:
                  jobId: op_2f8f1a1c-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  kind: fileoperation.copy
                  status: Running
                  createdAt: 1772719200000
                  lastUpdatedAt: 1772719214000
                  progress:
                    - Copying...
                  error: null
                  detail:
                    app: mycomponent_myapp
                    operation: fileoperation.copy
                    bytesDone: 41943040
                    bytesTotal: 104857600
        '400':
          $ref: '#/components/responses/ValidationError'
        '404':
          description: Operation not found, expired, or not readable by this caller
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: error
                data:
                  message: Operation not found
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
        - Apps
      summary: Cancel a long-running operation
      description: >-
        Requests cancellation of an operation. **Best effort, and said so
        plainly**: the flag is raised here and the worker stops at its next
        checkpoint, so `status` stays `Running` until it does. Poll
        `GET /apps/operations/{jobId}` for the terminal state. **Public** (the
        `jobId` is the capability)
      operationId: cancelOperation
      security: []
      parameters:
        - in: path
          name: jobId
          required: true
          schema:
            type: string
          description: Operation id
          example: op_2f8f1a1c-1a2b-4c3d-9e8f-0a1b2c3d4e5f
      responses:
        '200':
          description: Cancellation requested
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      jobId:
                        type: string
                      cancelRequested:
                        type: boolean
                      status:
                        type: string
                        description: The operation status at the moment of the request
              example:
                status: success
                data:
                  jobId: op_2f8f1a1c-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  cancelRequested: true
                  status: Running
        '404':
          description: Operation not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: error
                data:
                  message: Operation not found
        '500':
          $ref: '#/components/responses/InternalServerError'
  #Volume file operations
  /apps/moveobject:
    post:
      tags:
        - Volume Browser
      summary: Move a file or folder within an app volume
      description: >-
        Moves `source` to `destination` inside the application's persistent
        volume. Both operands are resolved relative to the volume root; a path
        that escapes it is refused.


        Answers `202 Accepted` with a `jobId` — poll
        `GET /apps/operations/{jobId}`. A move is registered as a job like the
        other three because paste is one gesture in a file browser: cut-paste
        returning a result while copy-paste returned a job would put two response
        shapes inside a single user action. **AppOwnerAbove**
      operationId: moveAppsObject
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/volumeObjectOperation'
            example:
              appname: myapp
              component: mycomponent
              source: data/report.csv
              destination: archive/report.csv
              overwrite: false
      responses:
        '202':
          $ref: '#/components/responses/OperationAccepted'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: >-
            Refused before any work starts: another file operation is running
            for this application, the node is at its concurrent-operation limit,
            the file-operation image is still being fetched, or the node is
            still reconciling its applications after boot. `Retry-After` says
            when to retry; `data.operation` (jobId, kind, statusUrl) names the
            operation being waited behind, when there is one.
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
  /apps/copyobject:
    post:
      tags:
        - Volume Browser
      summary: Copy a file or folder within an app volume
      description: >-
        Copies `source` to `destination` inside the application's persistent
        volume, preserving ownership, timestamps and symlinks. The volume's free
        space is checked against the measured size of the source before the copy
        starts, and the ceiling is enforced against what actually lands.


        A directory copied onto an existing directory overlays it rather than
        replacing it wholesale; a file over a file is replaced, and a file over a
        directory is refused. Answers `202 Accepted` with a `jobId` — poll
        `GET /apps/operations/{jobId}`. **AppOwnerAbove**
      operationId: copyAppsObject
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/volumeObjectOperation'
            example:
              appname: myapp
              component: mycomponent
              source: data
              destination: backup/data
              overwrite: false
      responses:
        '202':
          $ref: '#/components/responses/OperationAccepted'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: >-
            Refused before any work starts: another file operation is running
            for this application, the node is at its concurrent-operation limit,
            the file-operation image is still being fetched, or the node is
            still reconciling its applications after boot. `Retry-After` says
            when to retry; `data.operation` (jobId, kind, statusUrl) names the
            operation being waited behind, when there is one.
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
  /apps/compressobject:
    post:
      tags:
        - Volume Browser
      summary: Compress a file or folder into an archive
      description: >-
        Creates an archive of `source` at `destination` inside the application's
        persistent volume. The destination extension chooses the format and must
        be one of `.zip`, `.tar.gz` or `.tgz`; anything else is refused.


        `source` is one path or a list of paths. One path: a directory's
        *contents* are archived at the top level (a file goes in under its own
        name), so extracting the archive to a destination reproduces the source
        under that name. A list (at most 1000 entries; an entry may not be
        listed twice or sit inside another listed entry): each entry is
        archived by its path relative to the deepest folder holding all of
        them, and a directory arrives as that directory — what a file browser
        sends for a selection, even of one item. The archive's size is bounded
        as it is written (the volume's free space), not measured up front.
        Answers `202 Accepted` with a `jobId` — poll
        `GET /apps/operations/{jobId}`. **AppOwnerAbove**
      operationId: compressAppsObject
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/volumeObjectOperation'
            examples:
              folder:
                summary: One folder, its contents at the archive's top level
                value:
                  appname: myapp
                  component: mycomponent
                  source: data
                  destination: backup/data.tar.gz
                  overwrite: false
              selection:
                summary: A selection, each entry by its path from the deepest common folder
                value:
                  appname: myapp
                  component: mycomponent
                  source:
                    - logs/a.txt
                    - notes.txt
                  destination: backup/selection.zip
                  overwrite: false
      responses:
        '202':
          $ref: '#/components/responses/OperationAccepted'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: >-
            Refused before any work starts: another file operation is running
            for this application, the node is at its concurrent-operation limit,
            the file-operation image is still being fetched, or the node is
            still reconciling its applications after boot. `Retry-After` says
            when to retry; `data.operation` (jobId, kind, statusUrl) names the
            operation being waited behind, when there is one.
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
  /apps/extractobject:
    post:
      tags:
        - Volume Browser
      summary: Extract an archive within an app volume
      description: >-
        Extracts the archive at `source` to `destination` inside the
        application's persistent volume. The source is accepted by extension
        rather than by sniffing its content — `.zip`, `.tar.gz` or `.tgz` — so a
        caller who names what they uploaded cannot have it interpreted as
        something else.


        How much an extraction will write cannot be measured up front, so the
        volume's remaining capacity is the only bound: on a full volume the
        request is refused outright rather than expressed as a limit nothing
        enforces. Answers `202 Accepted` with a `jobId` — poll
        `GET /apps/operations/{jobId}`. **AppOwnerAbove**
      operationId: extractAppsObject
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/volumeObjectOperation'
            example:
              appname: myapp
              component: mycomponent
              source: backup/data.tar.gz
              destination: data
              overwrite: true
      responses:
        '202':
          $ref: '#/components/responses/OperationAccepted'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: >-
            Refused before any work starts: another file operation is running
            for this application, the node is at its concurrent-operation limit,
            the file-operation image is still being fetched, or the node is
            still reconciling its applications after boot. `Retry-After` says
            when to retry; `data.operation` (jobId, kind, statusUrl) names the
            operation being waited behind, when there is one.
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
  /apps/fileoperationimage/{imageid}:
    get:
      tags:
        - Volume Browser
      summary: Serve a container image to a peer node
      description: >-
        Node-to-node transfer of the file-operation image (the image volume file
        operations run in) to a peer node that cannot pull it from the registry.
        The caller is identified by its remote address rather than by a
        forwarded header, and the requested `imageid` is *compared* against the
        images this node expects to hold — never used to look one up — so there
        is no "send me image X" here. A caller that is not a confirmed node, or
        an id this node does not hold, gets `403`/`404` respectively; a node
        already serving the image to its maximum number of peers answers `503`.
        **Public** (peer nodes only)
      operationId: serveImageToPeer
      security: []
      parameters:
        - in: path
          name: imageid
          required: true
          schema:
            type: string
          description: >-
            The image id as the *calling* node's daemon files it, which need not
            be what this node's daemon calls it
          example: sha256:6a1f8b3c9d2e4f5a6b7c8d9e0f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c
      responses:
        '200':
          description: Image stream
          content:
            application/x-tar:
              schema:
                type: string
                format: binary
        '400':
          description: Remote address could not be determined
        '403':
          description: Caller is not a node entitled to this image
        '404':
          description: This node does not hold the requested image
        '503':
          description: This node is already serving the image to its maximum number of peers; retry after `Retry-After`
          headers:
            Retry-After:
              schema:
                type: integer
  #Apps - placement, inspection and peer queries
  /apps/placementfeasibility:
    post:
      tags:
        - Apps
      summary: Ask whether a specification can be placed
      description: >-
        Answers whether a prospective application specification can reach its
        instance count on the network as it stands right now, and with how much
        provider diversity. Send the specification you are about to register.


        `category` is the availability promise the network can make:

        - `impossible` — fewer eligible nodes than instances. Every
          approximation counts *toward* eligibility, so the shortfall is proven
          and registration will reject the spec.

        - `constrained` — the instance count is reachable, but a synced app's
          instances outnumber the available fault domains, so some instances must
          share a provider. Deliverable, with less resiliency than the instance
          count implies; registration warns.

        - `ok` — the requested count and diversity are both deliverable.


        Returns `503` while the node list or the IP location table is still
        filling in, rather than answering from a partial view. **User**
      operationId: placementFeasibility
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                An application specification. Only the placement-relevant fields
                are read — `instances`, `geolocation`, and the per-component
                `cpu`/`ram`/`hdd`/`tiered` and `containerData` (which decides
                whether a component is synced).
            example:
              instances: 5
              geolocation:
                - acEU
              compose:
                - name: mycomponent
                  cpu: 2
                  ram: 4000
                  hdd: 40
                  tiered: false
                  containerData: /data
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/placementAdvice'
              example:
                status: success
                data:
                  instances: 5
                  candidateCount: 1832
                  domainCount: 964
                  maxPerDomain: 1
                  placeable: true
                  tableAvailable: true
                  tableGenerated: '2026-09-01T00:00:00.000Z'
                  syncedApp: true
                  category: ok
                  constrained: false
                  satisfiable: true
                  normalizedGeolocation:
                    - acEU
                  coarsenedEntries: []
        '503':
          $ref: '#/components/responses/ServiceUnavailableError'
  /apps/placementlocations:
    get:
      tags:
        - Apps
      summary: Live placement geography
      description: >-
        Node, fault-domain and tier counts per continent and country, taken from
        this node's own IP location table in one pass over the confirmed node
        list. Nodes the table cannot resolve are counted in `unresolved` rather
        than guessed at.


        Returns `503` while the node list is still filling in, and reports
        `tableAvailable: false` when the location table itself is absent — the
        tree *is* the product here, so its absence is unavailability rather than
        an empty answer. Query parameters are rejected. **Public**
      operationId: placementLocations
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      tableAvailable:
                        type: boolean
                      tableGenerated:
                        type: string
                        nullable: true
                      total:
                        type: object
                        properties:
                          nodes:
                            type: integer
                          domains:
                            type: integer
                      unresolved:
                        type: integer
                        description: Nodes the location table could not resolve
                      continents:
                        type: object
                        description: Per-continent tree, each carrying its countries and tier counts
              example:
                status: success
                data:
                  tableAvailable: true
                  tableGenerated: '2026-09-01T00:00:00.000Z'
                  total:
                    nodes: 6387
                    domains: 3204
                  unresolved: 12
                  continents:
                    EU:
                      nodes: 2810
                      domains: 1490
                      tiers:
                        CUMULUS: 1402
                        NIMBUS: 701
                        STRATUS: 707
        '503':
          $ref: '#/components/responses/ServiceUnavailableError'
  /apps/heldcomponents:
    get:
      tags:
        - Apps
      summary: Application components this node holds
      description: >-
        Every application component this node holds — the union of the
        containers running right now, the identifiers the reconciler has
        committed to, and the components an operator has explicitly stopped. A
        component that is stopped is still held.


        Asked by peers during placement; running containers are read from
        Docker per request, behind a one-second cache. Query parameters are
        rejected. **Public**
      operationId: heldComponents
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: string
              example:
                status: success
                data:
                  - fluxmycomponent_myapp
                  - fluxwordpress
  /apps/promotedfolders:
    get:
      tags:
        - Apps
      summary: Syncthing folders promoted on this node
      description: >-
        The Syncthing folder ids this node has promoted to `sendreceive` — the
        folders it holds the writable copy of. Asked by a peer before it promotes
        a folder of its own.


        `ready` is `false` until the Syncthing monitor has completed its first
        pass; the `folders` list is empty until then and must not be read as "this
        node has promoted nothing". Query parameters are rejected. POST the
        same path to also receive what each receive-only folder holds.
        **Public**
      operationId: promotedFolders
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      ready:
                        type: boolean
                        description: Whether the monitor has produced a view yet
                      folders:
                        type: array
                        items:
                          type: string
              example:
                status: success
                data:
                  ready: true
                  folders:
                    - fluxmycomponent_myapp
    post:
      tags:
        - Apps
      summary: Promoted Syncthing folders, with what each receive-only folder holds
      description: >-
        The same answer as `GET /apps/promotedfolders`, plus `holding`: for each
        receive-only Syncthing folder on this node, how many bytes of the owner's
        data it holds that the cluster index does not (`bytes`), and when that
        data was last written (`newestModified`, Unix ms). A peer asks for it
        before promoting a folder of its own, so the node that holds the data
        wins the election rather than the node with the lowest address.


        `holding` is the application owner's information, so it is only included
        for a caller entitled to it: a Flux Team session (`zelidauth` header), or
        a body signed by a node on the deterministic node list. A signed body
        carries `target` (the `ip:port` of the node being asked, checked against
        this node's own address so a captured request cannot be replayed at
        another node), `timestamp` (a JSON number, Unix ms, no older than
        5 minutes and no more than 2 minutes ahead of this node's clock),
        `pubKey` (the asking node's public key as it appears on the node list)
        and `signature` (by that key, over `JSON.stringify` of the body without
        `signature`, keys in the order sent). Any other caller gets the open
        answer — `ready` and `folders` without `holding` — rather than an error.


        Answers **HTTP 503** while this node's network state has not started,
        instead of waiting for the node list; a peer reads that as "alive, not
        ready". The body is read as JSON (`Content-Type: application/json`).
        **Public** (`holding`: **FluxTeam** or a signed Fluxnode request)
      operationId: promotedFolderHoldings
      security:
        - {}
        - FluxID: []
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                target:
                  type: string
                  description: '`ip:port` of the node being asked; a bare IP means port 16127'
                timestamp:
                  type: integer
                  description: Unix milliseconds
                pubKey:
                  type: string
                  description: Public key of the asking node, as listed on the deterministic node list
                signature:
                  type: string
                  description: Signature by `pubKey` over `JSON.stringify` of the body without `signature`
            example:
              target: '203.0.113.10:16127'
              timestamp: 1772719200000
              pubKey: 04c2b8b...
              signature: H+ZB3oSrsw6XkBxxlbwk33LEBJ...
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      ready:
                        type: boolean
                        description: Whether the Syncthing monitor has completed its first pass
                      folders:
                        type: array
                        description: Folder ids this node has promoted to sendreceive
                        items:
                          type: string
                      holding:
                        type: object
                        description: >-
                          Present only for an entitled caller. Folder id to what this
                          node holds in it; `{}` before the monitor has measured anything.
                        additionalProperties:
                          type: object
                          properties:
                            bytes:
                              type: integer
                            newestModified:
                              type: integer
                              description: Unix milliseconds
              example:
                status: success
                data:
                  ready: true
                  folders:
                    - fluxmycomponent_myapp
                  holding:
                    fluxothercomponent_otherapp:
                      bytes: 6227702579
                      newestModified: 1772719100000
        '503':
          description: This node's network state has not started, so it cannot yet tell who is asking
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
              example:
                status: error
                data:
                  code: 503
                  name: ServiceUnavailable
                  message: Network state is not ready
  /apps/appcomponentnames:
    get:
      tags:
        - Apps
      summary: Component names of an application
      description: >-
        The component names of a registered application, each with whether it
        is a g: (masterSlave) component, and the application's total
        cpu/ram/hdd. A component_app name is accepted. Restricted to the Flux
        Team rather than the owner: an owner reads the specification itself and
        has no use for this, and the node operator is not a party to a
        customer's app at all. **FluxTeam**
      operationId: getApplicationComponentNames
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name
          example: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  components:
                    - name: mycomponent
                      masterSlave: false
                  resources:
                    cpu: 0.5
                    ram: 1000
                    hdd: 5
  /apps/messagescount:
    get:
      tags:
        - Apps
      summary: Count of app messages by owner
      description: >-
        How many global application messages carry the given owner. **Public**
      operationId: getAppsMessagesCount
      security: []
      parameters:
        - in: query
          name: appowner
          required: true
          schema:
            type: string
          description: Owner FluxID
          example: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: integer
              example:
                status: success
                data: 17
  /apps/tamperingevents:
    get:
      tags:
        - Apps
      summary: Runtime tampering events
      description: >-
        Containers on this node whose running image no longer matches the image
        of the registered specification, most recently seen first. Reported per
        application when `appname` is given, otherwise across every application
        on the node. **Public**
      operationId: getTamperingEvents
      security: []
      parameters:
        - in: query
          name: appname
          required: false
          schema:
            type: string
          description: Restrict to one application
          example: myapp
        - in: query
          name: limit
          required: false
          schema:
            type: integer
            minimum: 1
          description: Maximum events to return; clamped to the service maximum
          example: 50
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        appName:
                          type: string
                        detectedAt:
                          type: string
                        lastSeen:
                          type: string
              example:
                status: success
                data:
                  - appName: myapp
                    detectedAt: '2026-09-01T09:14:00.000Z'
                    lastSeen: '2026-09-01T11:02:00.000Z'
  /apps/appkill:
    get:
      tags:
        - Apps
      summary: Kill an app
      description: >-
        Stops the application's containers with a kill signal rather than a
        graceful stop. A kill is a stop that carries a signal, so it is recorded
        as the same desired state with a mode — the reconciler applies it where
        it stops the container. **AppOwnerAbove**
      operationId: appKill
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application or component name
          example: myapp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: Application myapp killed
  /apps/appmonitor:
    get:
      tags:
        - Apps
      summary: App monitoring data
      description: >-
        Stored CPU, memory, network and disk samples for an application on this
        node. **AppOwnerAbove**
      operationId: appMonitor
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application or component name
          example: myapp
        - in: query
          name: range
          required: false
          schema:
            type: integer
            minimum: 1
          description: >-
            Window in milliseconds back from now; all stored samples when
            omitted. Windows longer than a day are thinned to one sample per
            hour.
          example: 3600000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        timestamp:
                          type: integer
                          description: Unix milliseconds
                        data:
                          type: object
                          description: The sample, in Docker's container-stats shape
              example:
                status: success
                data:
                  - timestamp: 1772719200000
                    data:
                      cpu_stats:
                        cpu_usage:
                          total_usage: 123456789
                        system_cpu_usage: 987654321000
                        online_cpus: 4
                      memory_stats:
                        usage: 52428800
                        limit: 1048576000
  /apps/redeploycomponent:
    get:
      tags:
        - Apps
      summary: Redeploy a single component
      description: >-
        Redeploys one component of a composed application on this node without
        touching its siblings. `appname` is the *application* name and `component`
        the component name — an `appname` containing an underscore is refused.


        With `force`, the redeploy is the hard one: the component's volume is
        unmounted and removed, so the app's data on this node is gone. Skipped
        while a restore is running for the application. **AppOwnerAbove**
      operationId: redeployComponent
      security:
        - FluxID: []
      parameters:
        - in: query
          name: appname
          required: true
          schema:
            type: string
          description: Application name (not `component_app`)
          example: myapp
        - in: query
          name: component
          required: true
          schema:
            type: string
          description: Component name
          example: mycomponent
        - in: query
          name: force
          required: false
          schema:
            type: boolean
          description: Hard redeploy — removes the component's volume and data on this node
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Component mycomponent of myapp redeployed
        '503':
          description: >-
            Refused before the handler runs: the node is still reconciling its
            applications after boot (Retry-After 15), or has not yet obtained the
            network policy — the signed bundle carrying the blocked-repository
            list — so it cannot establish that an image is allowed (Retry-After 30).
          headers:
            Retry-After:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
              example:
                status: error
                data:
                  code: 503
                  name: ServiceUnavailable
                  message: Node has not yet obtained the network policy
  /flux/peers:
    get:
      tags:
        - Flux
      summary: Connected peers
      description: >-
        Detailed information about every peer connection this node holds, in
        both directions. To narrow the list use `GET /flux/peers/{filter}`; the
        filter is read from the path only, and a `filter` query parameter is
        ignored. **Public**
      operationId: getPeers
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
              example:
                status: success
                data:
                  - ip: 202.61.234.13
                    port: '16127'
                    direction: outbound
                    latency: 42
                    missedPongs: 0
                    lastPingTime: 1772719195000
                    lastPongTime: 1772719195042
                    connectedAt: 1772712000000
                    uptime: 7200000
                    source: deterministic
                    isAlive: true
                    badMessages: 0
                    capabilities: []
                    remoteClockOffsetMs: 3
                    lastTransmissionDelay: 12
                    messagesReceived: 5120
                    messagesSent: 4980
                    bytesReceived: 7340032
                    bytesSent: 6291456
                    remoteVersion: 8.20.0
                    reconnects: 0
  /flux/peers/{filter}:
    get:
      tags:
        - Flux
      summary: Connected peers, filtered
      description: >-
        `GET /flux/peers` narrowed by a path segment: `outbound` or `inbound`
        restrict the list to one direction, and an `ip:port` returns that single
        peer as an object (an error envelope `Peer <ip:port> not found` when no
        such connection exists). Any other value returns every peer. **Public**
      operationId: getPeersFiltered
      security: []
      parameters:
        - in: path
          name: filter
          required: true
          schema:
            type: string
          description: '`outbound`, `inbound`, or a peer''s `ip:port`'
          example: outbound
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    oneOf:
                      - type: array
                        items:
                          type: object
                      - type: object
              example:
                status: success
                data:
                  - ip: 202.61.234.13
                    port: '16127'
                    direction: outbound
                    latency: 42
                    source: deterministic
                    isAlive: true
                    connectedAt: 1772712000000
                    uptime: 7200000
  /flux/unstablenodes:
    get:
      tags:
        - Flux
      summary: Nodes flagged as unstable
      description: >-
        Peers this node has seen disconnect five or more times within the
        tracking window, with the count and the time of the first disconnect.
        **Public**
      operationId: getUnstableNodes
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        ip:
                          type: string
                        port:
                          type: string
                        disconnects:
                          type: integer
                        firstDisconnect:
                          type: integer
              example:
                status: success
                data:
                  - ip: 202.61.234.13
                    port: '16127'
                    disconnects: 7
                    firstDisconnect: 1772712000000
  /flux/peerhistory:
    get:
      tags:
        - Flux
      summary: Peer connection history
      description: >-
        Connection and disconnection events from this node's peer history ring
        buffer, oldest first (`limit` keeps the most recent N). Every filter is
        optional and they combine.
        **AdminAndFluxTeam**
      operationId: getPeerHistory
      security:
        - FluxID: []
      parameters:
        - in: query
          name: ip
          required: false
          schema:
            type: string
          description: IP or IP prefix to match
          example: '75.6.52'
        - in: query
          name: code
          required: false
          schema:
            type: integer
          description: WebSocket close code, matched against each event's `closeCode`
          example: 4004
        - in: query
          name: event
          required: false
          schema:
            type: string
          description: Event type
          example: disconnected
        - in: query
          name: limit
          required: false
          schema:
            type: integer
          description: Most recent N events
          example: 50
        - in: query
          name: since
          required: false
          schema:
            type: integer
          description: Unix milliseconds; only events after this moment
          example: 1773520000000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
              example:
                status: success
                data:
                  - ip: 75.6.52.11
                    port: '16127'
                    direction: inbound
                    event: disconnected
                    closeCode: 4004
                    timestamp: 1773520100000
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /flux/topology:
    get:
      tags:
        - Flux
      summary: Peer-exchange topology
      description: >-
        What this node's peers have reported about *their* peers: an
        `outbound`/`inbound` list per reporting node, with the number of
        reporters and of distinct known peers. **Public**
      operationId: getTopology
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      reporters:
                        type: integer
                      knownPeers:
                        type: integer
                      topology:
                        type: object
              example:
                status: success
                data:
                  reporters: 24
                  knownPeers: 312
                  topology:
                    '202.61.234.13:16127':
                      outbound:
                        - '95.216.1.2:16127'
                      inbound:
                        - '51.15.3.4:16127'
  /flux/networkhealth:
    get:
      tags:
        - Flux
      summary: Network health and diagnosis history
      description: >-
        This node's view of network health: the monitor's current status, whether
        it considers the network to be in steady state, and its recent diagnosis
        history. **Public**
      operationId: getNetworkHealth
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      status:
                        type: object
                      inSteadyState:
                        type: boolean
                      history:
                        type: array
                        items:
                          type: object
              example:
                status: success
                data:
                  status:
                    healthy: true
                  inSteadyState: true
                  history: []
  /flux/clockdrift:
    get:
      tags:
        - Flux
      summary: Clock drift of this node
      description: >-
        The node's time offset as reported by its NTP client (`chrony` or
        `systemd-timesyncd`), with the source that answered and the node's own
        Unix time in seconds. A node whose clock has drifted is refused by
        signature-gated peer endpoints, so this is the first thing to check when
        those return "stale". **Public**
      operationId: clockDrift
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      source:
                        type: string
                        description: '`chrony`, `timesyncd`, or none detected'
                      offset:
                        type: number
                        description: Offset in seconds
                      time:
                        type: integer
                        description: Node time, Unix seconds
              example:
                status: success
                data:
                  source: chrony
                  offset: 0.000184
                  time: 1772719200
  /flux/enterpriseappowners:
    get:
      tags:
        - Flux
      summary: Enterprise application owners
      description: >-
        The FluxIDs allowed to install on enterprise nodes: the union of every
        enterprise node's allowed owners, read from the signed network policy
        bundle this node holds. Until the node has obtained that policy it
        answers an error envelope, `Network policy not yet obtained`, rather than
        an empty list; the error is not cached, a successful answer is cached for
        an hour. **Public**
      operationId: getEnterpriseAppOwners
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: string
              example:
                status: success
                data:
                  - 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
  /flux/portsinuse:
    post:
      tags:
        - Flux
      summary: Ports in use on this node
      description: >-
        The ports this node currently has in use, returned **signed** so the
        caller can attribute the answer to this node.


        Two kinds of caller are accepted. A peer node signs its ask with
        `pubKey`, `signature` and `timestamp`; the timestamp window is checked
        *before* the signature, so an ask outside it is refused as stale
        regardless of who sent it — a node whose clock has drifted can read which
        problem it has from one line. A node operator or the Flux team may
        instead authenticate with a `zelidauth` header and send an empty body.
        **AdminAndFluxTeam** (or a signed peer request)
      operationId: portsInUse
      security:
        - FluxID: []
        - {}
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                pubKey:
                  type: string
                  description: Public key of the asking node
                signature:
                  type: string
                timestamp:
                  type: integer
                  description: Unix milliseconds; the ask is refused outside its validity window
            example:
              pubKey: 04c2b8b...
              signature: H+ZB3oSrsw6XkBxxlbwk33LEBJ...
              timestamp: 1772719200000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      pubKey:
                        type: string
                        description: Public key of the answering node
                      ports:
                        type: array
                        items:
                          type: integer
                      askedAt:
                        type: integer
                        nullable: true
                      signature:
                        type: string
                        description: This node's signature over the answer
              example:
                status: success
                data:
                  pubKey: 04a1f3d...
                  ports:
                    - 31350
                    - 31351
                  askedAt: 1772719200000
                  signature: IHs1c2...
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /flux/addoutgoingpeer:
    get:
      tags:
        - Flux
      summary: Ask this node to connect back to you
      description: >-
        Asks this node to open an outgoing connection to the given `ip`. The
        request is only honoured when it comes *from* that address and the
        address belongs to a confirmed node, so a node can ask a peer to connect
        back to it but cannot direct a peer at a third party. Refused while this
        node is unconfirmed, or when the connection already exists. **Public**
        (self-attested)
      operationId: addOutgoingPeer
      security: []
      parameters:
        - in: query
          name: ip
          required: true
          schema:
            type: string
          description: '`ip` or `ip:port` — must match the requester''s own address'
          example: '202.61.234.13:16127'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Outgoing connection to 202.61.234.13:16127 initiated
  /flux/startdiscovery:
    get:
      tags:
        - Flux
      summary: Start peer discovery
      description: >-
        Starts this node's peer discovery loop. **FluxTeam**
      operationId: startDiscovery
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Discovery started
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /flux/currentbranch:
    get:
      tags:
        - Flux
      summary: Git branch FluxOS is running
      description: The branch of the FluxOS working tree on this node. **FluxTeam**
      operationId: getCurrentBranch
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: master
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /flux/currentcommitid:
    get:
      tags:
        - Flux
      summary: Git commit FluxOS is running
      description: The commit id of the FluxOS working tree on this node. **FluxTeam**
      operationId: getCurrentCommitId
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: 10d0954961e0a2f3c5b7d8e9f0a1b2c3d4e5f607
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /flux/rebuildui:
    get:
      tags:
        - Flux
      summary: Reinstall the FluxOS UI
      description: >-
        Fetches the published CloudUI release again and reinstalls it,
        unconditionally — the periodic check stands down when the installed hash
        already matches the release, and a UI that is damaged rather than out of
        date matches all the same. Repairing one is what this is for.


        Refused on ArcaneOS, where the watchdog owns CloudUI; the refusal names
        the component to ask instead. Replaces the removed `/flux/rebuildhome`.
        **AdminAndFluxTeam**
      operationId: rebuildUi
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: CloudUI rebuilt
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /flux/eventstream:
    get:
      tags:
        - Flux
      summary: Server-sent event stream
      description: >-
        A `text/event-stream` of FluxOS events. Each event carries a monotonic
        `id`; send it back in the `Last-Event-ID` header to resume.


        A resuming consumer that fell behind the retention ring is told so
        *before* it is handed the survivors: a `stream:gap` event names
        `afterId`, `oldestRetainedId` and how many events were `dropped`. Silence
        here is what turns a dropped event into a timeout somewhere else
        entirely. A `: keepalive` comment is written every 15 seconds.


        Answers `404` on nodes where the event stream is not enabled. **Public**
      operationId: eventStream
      security: []
      parameters:
        - in: header
          name: Last-Event-ID
          required: false
          schema:
            type: integer
          description: Resume after this event id
          example: 4211
      responses:
        '200':
          description: Event stream
          content:
            text/event-stream:
              schema:
                type: string
              example: |
                event: stream:gap
                data: {"afterId":4211,"oldestRetainedId":4300,"dropped":88}
                id: 4211

                event: app:installed
                data: {"app":"myapp"}
                id: 4301
        '404':
          description: Event stream not enabled on this node
  /flux/testcounters:
    get:
      tags:
        - Flux
      summary: Internal event counters (test builds only)
      description: >-
        The internal event counters the event bus keeps. Available only on nodes
        where the test event stream is enabled; every other node answers `404`.
        **Public**
      operationId: testCounters
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  app:
                    installed: 3
        '404':
          description: Test counters not enabled on this node
  /flux/zelid:
    get:
      tags:
        - Flux
      summary: FluxID of the node operator (deprecated)
      description: >-
        Deprecated alias of `GET /flux/id`. **Public**
      operationId: getFluxZelID
      deprecated: true
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: string
              example:
                status: success
                data: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
  #Benchmark
  /benchmark/getstoredbenchmark:
    get:
      tags:
        - Benchmark
      summary: Last stored benchmark result
      description: >-
        The benchmark result this node has stored locally, with the tier it
        qualified for. Answers an error message when the node has never stored
        one. Cached for an hour. **Public**
      operationId: getStoredBenchmark
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      benchmark:
                        type: object
                      tier:
                        type: string
              example:
                status: success
                data:
                  tier: STRATUS
                  benchmark:
                    cores: 8
                    ram: 32
                    ssd: 880
  /benchmark/start:
    get:
      tags:
        - Benchmark
      summary: Start the benchmark daemon
      description: >-
        Starts `fluxbenchd` on the node (falling back to `zelbenchd` on older
        installs). **AdminAndFluxTeam**
      operationId: startBenchmarkDaemon
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Benchmark successfully started
  /benchmark/restart:
    get:
      tags:
        - Benchmark
      summary: Restart the benchmark daemon
      description: Restarts the benchmark daemon on the node. **AdminAndFluxTeam**
      operationId: restartBenchmarkDaemon
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Benchmark successfully restarted
  /benchmark/signzelnodetransaction:
    get:
      tags:
        - Benchmark
      summary: Sign a FluxNode transaction (deprecated)
      description: >-
        Deprecated alias of `GET /benchmark/signfluxnodetransaction`.
        **Admin**
      operationId: signZelNodeTransactionGet
      deprecated: true
      security:
        - FluxID: []
      parameters:
        - in: query
          name: hexstring
          required: true
          schema:
            type: string
          description: Transaction hex string
          example: '0400008085202f89'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/signfluxnodetransaction'
    post:
      tags:
        - Benchmark
      summary: Sign a FluxNode transaction, POST (deprecated)
      description: >-
        Deprecated alias of `POST /benchmark/signfluxnodetransaction`.
        **Admin**
      operationId: signZelNodeTransactionPost
      deprecated: true
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              properties:
                hexstring:
                  type: string
            example:
              hexstring: '0400008085202f89'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/signfluxnodetransaction'
  #ArcaneOS
  /arcane/authchallenge:
    get:
      tags:
        - ArcaneOS
      summary: Request a configuration challenge
      description: >-
        Issues a one-time challenge bound to the requester's IP address, to be
        answered by `POST /arcane/configsync`. HTTPS only.


        Available **only on ArcaneOS nodes** — every other node answers `501`. A
        node whose `flux-configd` is not reachable answers `502`, and a requester
        that has exhausted its challenge allowance answers `429`. **Public**
      operationId: arcaneAuthChallenge
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      challenge:
                        type: string
              example:
                status: success
                data:
                  challenge: 8f14e45fceea167a5a36dedd4bea2543
        '400':
          description: Requester IP address could not be determined
        '403':
          description: Not an HTTPS connection (`ForbiddenProtocol`)
        '429':
          description: Challenge limit reached for this requester
        '500':
          $ref: '#/components/responses/InternalServerError'
        '501':
          description: Not an ArcaneOS node
        '502':
          description: '`flux-configd` is not available'
  /arcane/configsync:
    post:
      tags:
        - ArcaneOS
      summary: Synchronise node configuration
      description: >-
        Applies a signed configuration to an ArcaneOS node. Answer a challenge
        from `GET /arcane/authchallenge` with its encrypted form and a signature
        over it, alongside the configuration to apply. HTTPS only.


        Available **only on ArcaneOS nodes** — every other node answers `501`,
        and a node whose `flux-configd` is not reachable answers `502`. **Public**
        (the signed challenge is the credential)
      operationId: arcaneConfigSync
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - challenge
                - encryptedChallenge
                - signature
                - configData
              properties:
                challenge:
                  type: string
                  description: The challenge as issued
                encryptedChallenge:
                  type: string
                signature:
                  type: string
                configData:
                  type: object
                  description: The configuration to apply
            example:
              challenge: 8f14e45fceea167a5a36dedd4bea2543
              encryptedChallenge: BASE64...
              signature: H+ZB3oSrsw6XkBxxlbwk33LEBJ...
              configData:
                apiport: 16127
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    $ref: '#/components/schemas/statusmessage'
              example:
                status: success
                data:
                  message: Configuration synchronised
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          description: The challenge answer failed authentication
        '403':
          description: Not an HTTPS connection (`ForbiddenProtocol`)
        '501':
          description: Not an ArcaneOS node
        '502':
          description: '`flux-configd` is not available'
  #Host information (application containers)
  /hostinfo:
    servers:
      - url: 'http://169.254.43.43:16101'
        description: >-
          The node's host-information listener, reachable only from application
          containers on that node
    get:
      tags:
        - Apps
      summary: Host information for an app container
      description: >-
        Lets an application learn about the node it runs on. Served by a
        separate listener on port `16101`, bound to the link-local address
        `169.254.43.43`, so only the node's application containers can reach it.


        The caller is identified by its socket address: it must lie inside the
        subnet of an application's Flux Docker network, and that application is
        named in `appName`. Any other caller is answered with the unauthorized
        error envelope. No `zelidauth` header is read.


        `id` is the node's collateral identifier (collateral transaction hash
        followed by its output index). `ip` is the node's public IP without the
        port. `geo` is the node's geolocation record without its `ip` and `org`
        fields. `benchmark` holds the node's benchmarked resources, from the
        live benchmark when it reports a valid tier and from the last stored
        benchmark otherwise; `eps_singlethread` appears only when the benchmark
        reports it. When the collateral, IP, geolocation or benchmark is not
        available yet, the call answers an error envelope naming which.
        **Public** (application containers on this node only)
      operationId: getHostInfo
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      appName:
                        type: string
                        description: The application whose container is calling
                      id:
                        type: string
                        description: Collateral transaction hash followed by its output index
                      ip:
                        type: string
                        description: The node's public IP
                      geo:
                        type: object
                        description: The node's geolocation record, without `ip` and `org`
                      benchmark:
                        type: object
                        properties:
                          vcores:
                            type: number
                          ram:
                            type: number
                          disk:
                            type: number
                          diskwritespeed:
                            type: number
                          eps:
                            type: number
                          download_speed:
                            type: number
                          upload_speed:
                            type: number
                          eps_singlethread:
                            type: number
              example:
                status: success
                data:
                  appName: myapp
                  id: 405e86b48a5d6846763f260154ca15383854ce5a2efad31474e55ff60cb629790
                  ip: 185.199.108.1
                  geo:
                    continent: Europe
                    continentCode: EU
                    country: Germany
                    countryCode: DE
                    region: HE
                    regionName: Hesse
                    lat: 50.1109
                    lon: 8.6821
                    isp: Hetzner Online GmbH
                    asn: AS24940 Hetzner Online GmbH
                    mobile: false
                    proxy: false
                    hosting: true
                    static: true
                    dataCenter: true
                  benchmark:
                    vcores: 8
                    ram: 7.1
                    disk: 220
                    diskwritespeed: 540.25
                    eps: 489.2
                    download_speed: 150.45
                    upload_speed: 50.21
  #Payments
  /payment/paymentrequest:
    get:
      tags:
        - Payments
      summary: Create a payment request
      description: >-
        Issues an id for one browser-and-wallet meeting. The page that wants
        paying listens on this node's WebSocket `/ws/payment/<paymentId>` and
        hands the wallet a callback to
        `POST /payment/verifypayment?paymentid=<paymentId>`; the transaction id
        the wallet posts there is delivered to that listener and to nothing
        else. The id (`<ms timestamp>_<32 hex chars>`) is unguessable, held in
        the issuing node's memory for one hour, valid only on that node, and
        spent once delivered (or dropped when the listening socket closes
        before an answer). Issuance is limited per caller address (the socket
        peer, or the address a recognised balancer reports): more than 5 per
        second answers `429` `Too many payment requests`, and a caller already
        holding 10 pending ids answers `429` `Too many pending payment
        requests`. **Public**
      operationId: paymentRequest
      security: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      paymentId:
                        type: string
              example:
                status: success
                data:
                  paymentId: '1772719200000_3f9a1c0e7b2d4a6f8e1c3b5d7f9a2c4e'
        '429':
          description: Issuance rate (5/s) or pending-id cap (10) for this caller exceeded
  /payment/verifypayment:
    post:
      tags:
        - Payments
      summary: Deliver a wallet payment callback
      description: >-
        The callback a wallet posts after broadcasting its transaction. The
        transaction id (`transaction_id`, as ZelCore sends it, or `txid`; a
        string of at most 500 characters) is handed to the browser listening on
        `/ws/payment/<paymentid>` for an id minted by
        `GET /payment/paymentrequest` on this node, and the id is spent once the
        browser receives it. Nothing is verified and nothing is recorded: the
        transaction id is relayed as a claim, not checked against any chain (an
        app is paid when a transaction on chain matches its message hash). Any
        content type is accepted; a body no parser claims is limited to 10,000
        bytes (`413`). Validation failures (`No payment ID is specified`,
        `Invalid payment ID format`, `No transaction ID is specified`,
        `Transaction ID must be a string`, `Invalid transaction ID length`,
        `Payment request not found or has expired`) are error envelopes.
        **Public**
      operationId: verifyPayment
      security: []
      parameters:
        - in: query
          name: paymentid
          required: false
          schema:
            type: string
          description: Payment request id, when not sent in the body
          example: '1772719200000_k3j9xq2mv8p'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                paymentid:
                  type: string
                transaction_id:
                  type: string
                  description: Transaction id as sent by ZelCore
                txid:
                  type: string
                  description: Transaction id (equivalent to `transaction_id`)
            example:
              paymentid: '1772719200000_3f9a1c0e7b2d4a6f8e1c3b5d7f9a2c4e'
              transaction_id: 9f2c1e...
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                      paymentId:
                        type: string
                      txid:
                        type: string
                      success_url:
                        type: string
              example:
                status: success
                data:
                  message: Payment received successfully
                  paymentId: '1772719200000_3f9a1c0e7b2d4a6f8e1c3b5d7f9a2c4e'
                  txid: 9f2c1e...
                  success_url: https://home.runonflux.io/successcheckout
        '413':
          description: Request body too large
        '500':
          $ref: '#/components/responses/InternalServerError'
  #Syncthing - metrics and diagnostics
  /syncthing/metrics:
    get:
      tags:
        - Syncthing
      summary: Full Syncthing metrics
      description: >-
        A complete snapshot of this node's Syncthing state — health, system,
        connections and per-folder figures — collected at request time.
        **FluxTeam**
      operationId: getSyncthingMetrics
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  timestamp: 1772719200000
                  overall:
                    healthy: true
                    syncProgress: 100
                    issues: []
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /syncthing/metrics/health:
    get:
      tags:
        - Syncthing
      summary: Syncthing health summary
      description: >-
        The condensed form of `GET /syncthing/metrics`: overall health, sync
        progress and issue list, plus system uptime, connection counts and folder
        counts. **FluxTeam**
      operationId: getSyncthingHealthSummary
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      timestamp:
                        type: integer
                      healthy:
                        type: boolean
                      syncProgress:
                        type: number
                      issues:
                        type: array
                        items:
                          type: string
                      health:
                        type: object
                      system:
                        type: object
                      connections:
                        type: object
                      folders:
                        type: object
              example:
                status: success
                data:
                  timestamp: 1772719200000
                  healthy: true
                  syncProgress: 100
                  issues: []
                  health:
                    status: OK
                    error: null
                  system:
                    uptime: 864000
                    status: running
                  connections:
                    connected: 12
                    total: 14
                  folders:
                    total: 6
                    syncing: 0
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /syncthing/metrics/history:
    get:
      tags:
        - Syncthing
      summary: Syncthing metrics history
      description: >-
        The most recent metrics snapshots this node has retained, oldest first.
        **FluxTeam**
      operationId: getSyncthingMetricsHistory
      security:
        - FluxID: []
      parameters:
        - in: query
          name: limit
          required: false
          schema:
            type: integer
            minimum: 1
          description: >-
            Most recent N snapshots; the full retained history when omitted
          example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
                    properties:
                      snapshots:
                        type: array
                        items:
                          type: object
                      count:
                        type: integer
                      maxSnapshots:
                        type: integer
              example:
                status: success
                data:
                  snapshots: []
                  count: 0
                  maxSnapshots: 100
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /syncthing/peer/diagnostics:
    get:
      tags:
        - Syncthing
      summary: Peer sync diagnostics
      description: >-
        Per-peer synchronisation diagnostics for the folders this node shares —
        what each peer is connected as, how far it has got, and where a folder is
        stalled. **FluxTeam**
      operationId: getPeerSyncDiagnostics
      security:
        - FluxID: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: object
              example:
                status: success
                data:
                  timestamp: 1772719200000
                  localDeviceId: P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2
                  summary:
                    totalFolders: 0
                    foldersWithIssues: 0
                    cannotSyncFolders: []
                    peersMoreUpdated: []
                    disconnectedPeers: []
                    connectedPeers: []
                  folders: {}
                  devices: {}
                  issues: []
                  recommendations: []
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /explorer/fusion/coinbase:
    get:
      tags:
        - Explorer
      summary: Fusion coinbase transactions for an address (deprecated)
      description: >-
        Fusion coinbase transactions belonging to an address. Retained for
        compatibility with the Fusion mining pool integration and no longer part
        of the maintained explorer surface. On a node whose daemon runs with
        insightexplorer the call answers the error "Data unavailable. Deprecated".
        **Public**
      operationId: getAddressFusionCoinbase
      deprecated: true
      security: []
      parameters:
        - in: query
          name: address
          required: true
          schema:
            type: string
          description: Flux transparent address
          example: t1Xyz9k4B4bfCkGtDNmPo3bNPGnZ8kzu9Sn
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    type: array
                    items:
                      type: object
              example:
                status: success
                data: []
  #Daemon - Zcash RPCs
  /daemon/createzelnodekey:
    get:
      tags:
        - Daemon
      summary: Create fluxnode private key (deprecated)
      description: >-
        Deprecated alias of `GET /daemon/createfluxnodekey`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Admin**
      operationId: createzelnodekey
      deprecated: true
      security:
        - FluxID: []
      responses:
        '200':
          description: Identical to `GET /daemon/createfluxnodekey`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /daemon/getzelnodecount:
    get:
      tags:
        - Daemon
      summary: Flux node count (deprecated)
      description: >-
        Deprecated alias of `GET /daemon/getfluxnodecount`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Public**
      operationId: getzelnodecount
      deprecated: true
      security: []
      responses:
        '200':
          description: Identical to `GET /daemon/getfluxnodecount`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /daemon/getzelnodeoutputs:
    get:
      tags:
        - Daemon
      summary: Fluxnode transaction outputs (deprecated)
      description: >-
        Deprecated alias of `GET /daemon/getfluxnodeoutputs`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Admin**
      operationId: getzelnodeoutputs
      deprecated: true
      security:
        - FluxID: []
      responses:
        '200':
          description: Identical to `GET /daemon/getfluxnodeoutputs`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /daemon/getzelnodestatus:
    get:
      tags:
        - Daemon
      summary: Flux node status (deprecated)
      description: >-
        Deprecated alias of `GET /daemon/getfluxnodestatus`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Public**
      operationId: getzelnodestatus
      deprecated: true
      security: []
      responses:
        '200':
          description: Identical to `GET /daemon/getfluxnodestatus`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /daemon/listzelnodeconf:
    get:
      tags:
        - Daemon
      summary: The fluxnode conf file (deprecated)
      description: >-
        Deprecated alias of `GET /daemon/listfluxnodeconf`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Admin**
      operationId: listzelnodeconf
      deprecated: true
      security:
        - FluxID: []
      parameters:
        - in: query
          name: filter
          required: false
          schema:
            type: string
          description: Filter the list
          example: ENABLED
      responses:
        '200':
          description: Identical to `GET /daemon/listfluxnodeconf`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /daemon/listzelnodes:
    get:
      tags:
        - Daemon
      summary: Flux node list (deprecated)
      description: >-
        Deprecated alias of `GET /daemon/listfluxnodes`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Public**
      operationId: listzelnodes
      deprecated: true
      security: []
      parameters:
        - in: query
          name: filter
          required: false
          schema:
            type: string
          description: Filter the list
          example: ENABLED
        - in: query
          name: limit
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 9999999
          description: >-
            Return only the first `limit` entries of the ranked list. Applied
            only to a successful answer and only when the value is a whole
            number from 1 to 9999999 without a leading zero; any other value
            is ignored and the full list is returned.
          example: 100
      responses:
        '200':
          description: Identical to `GET /daemon/listfluxnodes`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /daemon/startdeterministiczelnode:
    get:
      tags:
        - Daemon
      summary: Start fluxnode command (deprecated)
      description: >-
        Deprecated alias of `GET /daemon/startdeterministicfluxnode`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Admin**
      operationId: startdeterministiczelnode
      deprecated: true
      security:
        - FluxID: []
      parameters:
        - in: query
          name: alias
          required: false
          schema:
            type: string
          description: FluxNode alias
          example: mynode
        - in: query
          name: lockwallet
          required: false
          schema:
            type: boolean
          description: Lock the wallet afterwards
          example: false
      responses:
        '200':
          description: Identical to `GET /daemon/startdeterministicfluxnode`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /daemon/startzelnode:
    get:
      tags:
        - Daemon
      summary: Start FluxNode command (deprecated)
      description: >-
        Deprecated alias of `GET /daemon/startfluxnode`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Admin**
      operationId: startzelnode
      deprecated: true
      security:
        - FluxID: []
      parameters:
        - in: query
          name: set
          required: false
          schema:
            type: string
          description: Which set of FluxNode(s) to start, as for `GET /daemon/startfluxnode`
          example: alias
        - in: query
          name: lockwallet
          required: false
          schema:
            type: boolean
          description: Lock the wallet afterwards
          example: false
        - in: query
          name: alias
          required: false
          schema:
            type: string
          description: FluxNode alias
          example: mynode
      responses:
        '200':
          description: Identical to `GET /daemon/startfluxnode`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /daemon/viewdeterministiczelnodelist:
    get:
      tags:
        - Daemon
      summary: Deterministic FluxNode list (deprecated)
      description: >-
        Deprecated alias of `GET /daemon/viewdeterministicfluxnodelist`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Public**
      operationId: viewdeterministiczelnodelist
      deprecated: true
      security: []
      parameters:
        - in: query
          name: filter
          required: false
          schema:
            type: string
          description: Filter the list
          example: ENABLED
        - in: query
          name: limit
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 9999999
          description: >-
            Return only the first `limit` entries of the ranked list. Applied
            only to a successful answer and only when the value is a whole
            number from 1 to 9999999 without a leading zero; any other value
            is ignored and the full list is returned.
          example: 100
      responses:
        '200':
          description: Identical to `GET /daemon/viewdeterministicfluxnodelist`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  #ID - deprecated zelid aliases
  /zelid/loginphrase:
    get:
      tags:
        - ID
      summary: Obtain login phrase (deprecated)
      description: >-
        Deprecated alias of `GET /id/loginphrase`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Public**
      operationId: zelidLoginPhrase
      deprecated: true
      security: []
      responses:
        '200':
          description: Identical to `GET /id/loginphrase`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/emergencyphrase:
    get:
      tags:
        - ID
      summary: Obtain emergency login phrase (deprecated)
      description: >-
        Deprecated alias of `GET /id/emergencyphrase`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Public**
      operationId: zelidEmergencyPhrase
      deprecated: true
      security: []
      responses:
        '200':
          description: Identical to `GET /id/emergencyphrase`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/loggedsessions:
    get:
      tags:
        - ID
      summary: Obtain all logged sessions of a FluxID (deprecated)
      description: >-
        Deprecated alias of `GET /id/loggedsessions`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **User**
      operationId: zelidLoggedSessions
      deprecated: true
      security:
        - FluxID: []
      responses:
        '200':
          description: Identical to `GET /id/loggedsessions`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/loggedusers:
    get:
      tags:
        - ID
      summary: Gets information about logged users (deprecated)
      description: >-
        Deprecated alias of `GET /id/loggedusers`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Admin**
      operationId: zelidLoggedUsers
      deprecated: true
      security:
        - FluxID: []
      responses:
        '200':
          description: Identical to `GET /id/loggedusers`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/activeloginphrases:
    get:
      tags:
        - ID
      summary: Lists active login phrases (deprecated)
      description: >-
        Deprecated alias of `GET /id/activeloginphrases`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Admin**
      operationId: zelidActiveLoginPhrases
      deprecated: true
      security:
        - FluxID: []
      responses:
        '200':
          description: Identical to `GET /id/activeloginphrases`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/logoutcurrentsession:
    get:
      tags:
        - ID
      summary: Logs out current session (deprecated)
      description: >-
        Deprecated alias of `GET /id/logoutcurrentsession`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **User**
      operationId: zelidLogoutCurrentSession
      deprecated: true
      security:
        - FluxID: []
      responses:
        '200':
          description: Identical to `GET /id/logoutcurrentsession`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/logoutallsessions:
    get:
      tags:
        - ID
      summary: Logs out all sessions (deprecated)
      description: >-
        Deprecated alias of `GET /id/logoutallsessions`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **User**
      operationId: zelidLogoutAllSessions
      deprecated: true
      security:
        - FluxID: []
      responses:
        '200':
          description: Identical to `GET /id/logoutallsessions`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/logoutallusers:
    get:
      tags:
        - ID
      summary: Logs out all users (deprecated)
      description: >-
        Deprecated alias of `GET /id/logoutallusers`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Admin**
      operationId: zelidLogoutAllUsers
      deprecated: true
      security:
        - FluxID: []
      responses:
        '200':
          description: Identical to `GET /id/logoutallusers`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/verifylogin:
    post:
      tags:
        - ID
      summary: Login into Flux (deprecated)
      description: >-
        Deprecated alias of `POST /id/verifylogin`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Public**
      operationId: zelidVerifyLogin
      deprecated: true
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              description: Identical to the body of `POST /id/verifylogin`.
      responses:
        '200':
          description: Identical to `POST /id/verifylogin`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/providesign:
    post:
      tags:
        - ID
      summary: Provide signature (deprecated)
      description: >-
        Deprecated alias of `POST /id/providesign`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Public**
      operationId: zelidProvideSign
      deprecated: true
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              description: Identical to the body of `POST /id/providesign`.
      responses:
        '200':
          description: Identical to `POST /id/providesign`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/checkprivilege:
    post:
      tags:
        - ID
      summary: Checks the privilege level of a user (deprecated)
      description: >-
        Deprecated alias of `POST /id/checkprivilege`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **Public**
      operationId: zelidCheckPrivilege
      deprecated: true
      security: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              description: Identical to the body of `POST /id/checkprivilege`.
      responses:
        '200':
          description: Identical to `POST /id/checkprivilege`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint

  /zelid/logoutspecificsession:
    post:
      tags:
        - ID
      summary: Logs out a specific session (deprecated)
      description: >-
        Deprecated alias of `POST /id/logoutspecificsession`, kept for callers written
        against the pre-rebrand vocabulary. Identical behaviour and identical
        response; use the canonical endpoint in new code. **User**
      operationId: zelidLogoutSpecificSession
      deprecated: true
      security:
        - FluxID: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: object
              description: Identical to the body of `POST /id/logoutspecificsession`.
      responses:
        '200':
          description: Identical to `POST /id/logoutspecificsession`
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  data:
                    description: As returned by the canonical endpoint
components:
  schemas:
    operation:
      type: object
      description: The state of a long-running operation, as served by GET /apps/operations/{jobId}.
      properties:
        jobId:
          type: string
          description: Operation id, of the form `op_<uuid>`
        kind:
          type: string
          description: What the operation is doing, e.g. `fileoperation.copy`
        status:
          type: string
          description: >-
            `Running`, or one of the terminal states. `Evicted` means the node
            took the work away — distinct from `Canceled`, which the caller asked
            for, and from `Failed`, where the caller's input was at fault.
          enum:
            - Running
            - Succeeded
            - Failed
            - Canceled
            - Evicted
        createdAt:
          type: integer
          description: Unix milliseconds
        lastUpdatedAt:
          type: integer
          description: Unix milliseconds
        progress:
          type: array
          description: Line-numbered progress output; use `sinceSeq` to read only what is new
          items:
            type: string
        error:
          nullable: true
          type: object
          description: >-
            An RFC 9457 problem object when the operation failed, otherwise null.
            Registry credentials are scrubbed from `detail`.
          properties:
            type:
              type: string
            title:
              type: string
            status:
              type: integer
            detail:
              type: string
            instance:
              type: string
            code:
              type: string
            retryAfterMs:
              type: integer
        detail:
          nullable: true
          type: object
          description: Operation-specific detail, built at read time
    volumeObjectOperation:
      type: object
      description: >-
        Operands for a file operation inside an application's persistent volume.
        Each field may also be sent as a query parameter.
      required:
        - appname
        - component
        - source
        - destination
      properties:
        appname:
          type: string
          description: Application name
        component:
          type: string
          description: Component name; `null` for a pre-v4 (single-component) application
        source:
          oneOf:
            - type: string
            - type: array
              minItems: 1
              maxItems: 1000
              items:
                type: string
          description: >-
            Path relative to the volume root. `POST /apps/compressobject` also
            accepts a list of up to 1000 paths; the other operations take one.
        destination:
          type: string
          description: Path relative to the volume root
        overwrite:
          type: boolean
          description: >-
            Replace an existing destination. `false` by default, in which case an
            occupied destination is refused.
          default: false
    placementAdvice:
      type: object
      description: The answer of POST /apps/placementfeasibility.
      properties:
        instances:
          type: integer
          description: The instance count the answer was computed for
        candidateCount:
          type: integer
          description: Eligible nodes for the spec's geolocation and tier requirements
        domainCount:
          type: integer
          description: Distinct fault domains among the candidates
        maxPerDomain:
          type: integer
          description: Instances that would have to share a single fault domain
        placeable:
          type: boolean
        tableAvailable:
          type: boolean
          description: Whether the IP location table was available
        tableGenerated:
          type: string
          nullable: true
        syncedApp:
          type: boolean
          description: Whether any component of the spec is synced
        category:
          type: string
          description: The availability promise the network can make for this spec
          enum:
            - ok
            - constrained
            - impossible
        constrained:
          type: boolean
        satisfiable:
          type: boolean
        normalizedGeolocation:
          type: array
          items:
            type: string
        coarsenedEntries:
          type: array
          description: Geolocation entries that had to be widened to be answerable
          items:
            type: string
    signature:
      description: Signature of signed loginPhrase with zelid.
      type: string
      example: >-
        H+ZB3oSrsw6XkBxxlbwk33LEBJYvqtbMIm2kL9JzuoXMC6pSZd0lBHdnhJYzMTXv81zZQ7G/pkK1NvYN7cNF0GE=
    FluxIDLogin:
      type: object
      properties:
        loginPhrase:
          description: Login Phrase. Provided by GET /id/loginphrase.
          type: string
          minLength: 40
          example: 1574991374806spbcvsuwerl52tppx9dw5khuz8rew13mkq86gg8r2c
        zelid:
          description: FluxID or any P2PKH bitcoin address or ethereum address
          type: string
          minLength: 25
          maxLength: 42
          example: 1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC
        signature:
          $ref: '#/components/schemas/signature'
    status:
      type: string
      description: Explanation of status
      enum:
        - success
        - error
    nullmessage:
      type: string
      description: Null. Status will return with success if call/command was successful.
    statusmessage:
      type: object
      properties:
        message:
          type: string
          description: Explanation of status
    streamdata:
      type: object
      properties:
        status:
          type: string
          description: Status of installation
        progressDetail:
          type: object
          properties:
            current:
              type: integer
              description: Progress in bytes
            total:
              type: integer
              description: Total byte size of download
        progress:
          type: string
          description: Progress bar animation to the download
        id:
          type: string
          description: Operation Id
        data:
          oneOf:
            - type: object
              properties:
                message:
                  type: string
                  description: Message of volume creation being completed
            - type: string
              description: Message of app successfully being started
    benchstatus:
      type: object
      properties:
        status:
          type: string
          description: Status of server
        benchmarking:
          type: string
          description: Tier server passed for CUMULUS/NIMMBUS/STRATUS
        zelback:
          type: string
          description: Status of Flux backend
    benchinfo:
      type: object
      properties:
        version:
          type: string
          description: Version number
        rpcport:
          type: integer
          description: Rpc port number
    createmultisig:
      type: object
      properties:
        address:
          type: string
          description: The value of the new multisig address
        redeemScript:
          type: string
          description: The string value of the hex-encoded redemption script
    decodescript:
      type: object
      properties:
        asm:
          type: string
          description: Script public key
        reqSigs:
          type: integer
          description: The required signatures
        type:
          type: string
          description: The output type
        addresses:
          type: array
          items:
            type: string
            description: Flux address
        p2sh:
          type: string
          description: Script address
    decoderawtransaction:
      type: object
      properties:
        txid:
          type: string
          description: The transaction id
        version:
          type: integer
          description: The version
        overwintered:
          type: boolean
          description: The Overwintered flag
        versiongroupid:
          type: string
          description: The version group id
        locktime:
          type: integer
          description: The lock time
        expiryheight:
          type: integer
          description: Last valid block height for mining transaction
        vin:
          type: array
          items:
            type: object
            properties:
              txid:
                type: string
                description: The transaction id
              vout:
                type: integer
                description: The output index
              scriptSig:
                type: object
                properties:
                  asm:
                    type: string
                    description: Script public key
                  hex:
                    type: string
                    description: The hex
              sequence:
                type: integer
                description: The script sequence number
        vout:
          $ref: '#/components/schemas/vout'
        vJoinSplit:
          $ref: '#/components/schemas/joinsplit'
        valueBalance:
          type: number
          description: The balance value of FLUX
        valueBalanceZat:
          type: number
          description: The balance value of FLUX
        vShieldedSpend:
          $ref: '#/components/schemas/shieldedspend'
        vShieldedOutput:
          $ref: '#/components/schemas/shieldedoutput'
    getbenchmarks:
      type: object
      properties:
        ipaddress:
          type: string
          description: Ip address of FluxNode server
        architecture:
          type: string
          description: System architecture
        armboard:
          type: string
          description: ARM board model
        status:
          type: string
          description: CUMULUS/NIMMBUS/STRATUS
        time:
          type: integer
          description: Time of bench in epoch time
        real_cores:
          type: string
          description: The amount of physical cores detected
        cores:
          type: integer
          description: The amount of vcores detected
        ram:
          type: number
          description: The amount of ram detected
        ssd:
          type: number
          description: The amount of ssd space detected
        hdd:
          type: number
          description: The amount of hdd space detected
        dd_write:
          type: number
          description: The amount of write speed detected
        totalstorage:
          type: number
          description: The amount of hdd and ssd space detected
        disksinfo:
          type: array
          items:
            type: object
            description: Disks information
            properties:
              disk:
                type: string
                description: Disk name
              size:
                type: number
                description: The amount of space detected
              writespeed:
                type: number
                description: The amount of write speed detected
        eps:
          type: number
          description: The amount of cpu speed detected
        ping:
          type: number
          description: Ping number in ms
        download_speed:
          type: number
          description: Download speed        
        upload_speed:
          type: number
          description: Upload speed   
        bench_version:
          type: string
          description: Benchmark version
        speed_version:
          type: string
          description: Speedtest version
        thunder:
          type: boolean
          description: True if fractus mode enabled    
        error:
          type: string
          description: Error message  
    joinsplit:
      type: array
      items:
        type: object
        description: This is related to sprout tx's
        properties:
          vpub_old:
            type: number
            description: Public input value of FLUX
          vpub_oldZat:
            type: integer
            description: Public input value of FLUX in satoshis
          vpub_new:
            type: number
            description: Public output of FLUX
          vpub_newZat:
            type: integer
            description: Public output of FLUX in satoshis
          anchor:
            type: string
            description: Merkle root of note commitment tree
          nullifiers:
            type: array
            items:
              type: string
              description: Input note nullifier
          commitments:
            type: array
            items:
              type: string
              description: Output note commitment
          onetimePubKey:
            type: string
            description: The onetime public key used to encrypt the cipertexts
          randomSeed:
            type: string
            description: The random seed
          macs:
            type: array
            items:
              type: string
              description: Input note MAC
          proof:
            type: string
            description: The zero-knowledge proof
          ciphertexts:
            type: array
            items:
              type: string
              description: Output note ciphertext
    shieldedoutput:
      type: array
      items:
        type: object
        properties:
          cv:
            type: string
            description: Output cv note
          cmu:
            type: string
            description: Output cmu note
          ephemeralKey:
            type: string
            description: The ephemeral key
          encCiphertext:
            type: string
            description: The encrypted ciphertext
          outCiphertext:
            type: string
            description: Output note ciphertext
          proof:
            type: string
            description: The zero-knowledge proof
    shieldedspend:
      type: array
      items:
        type: object
        properties:
          cv:
            type: string
            description: The cv note encryption
          anchor:
            type: string
            description: Merkle root of note commitment tree
          nullifier:
            type: string
            description: The nullifier
          rk:
            type: string
            description: The prover key
          proof:
            type: string
            description: The proof
          spendAuthSig:
            type: string
            description: The spend signature
    signfluxnodetransaction:
      type: object
      properties:
        status:
          type: string
          description: Explanation of status
        tier:
          type: string
          description: Tier of FluxNode
        hex:
          type: string
          description: Hex encoded info of the transaction
    startfluxnode:
      type: object
      properties:
        overall:
          type: string
          description: Overall status messge
        detail:
          type: array
          items:
            type: object
            properties:
              node:
                type: string
                description: Node name or alias
              result:
                type: string
                description: Success or failed
              error:
                type: string
                description: Error message if failed
    vout:
      type: array
      items:
        type: object
        properties:
          value:
            type: number
            description: The value in FLUX
          valueZat:
            type: integer
            description: The value in FLUX
          valueSat:
            type: integer
            description: The value in FLUX
          'n':
            type: integer
            description: Index
          scriptPubKey:
            type: object
            properties:
              asm:
                type: string
                description: Script public key
              hex:
                type: string
                description: The hex
              reqSigs:
                type: integer
                description: The required sigs
              type:
                type: string
                description: 'The type, eg pubkeyhash'
              addresses:
                type: array
                items:
                  type: string
                  description: FLUX addresses
    appslocation:
      type: array
      items:
        type: object
        properties:
          ip:
            type: string
            description: IP address of app
          name:
            type: string
            description: App name
          broadcastedAt:
            type: string
            description: Start date and timestamp of app
          expireAt:
            type: string
            description: Expiration date and timestamp of app
          hash:
            type: string
            description: App hash
    appname:
      type: object
      properties:
        name:
          type: string
          description: Name of app
        compose:
          type: array
          items:
            type: object
            description: component specification
            properties:
              name:
                type: string
                description: Name of app
              description:
                type: string
                description: Description of component
              repotag:
                type: string
                description: 'Repotag of docker image in this format `namespace/repository:tag`'
              ports:
                type: array
                items:
                  type: integer
                  description: Ports list
              domains:
                type: array
                items:
                  type: string
                  description: Domain list
              enviromentParameters:
                type: array
                items:
                  type: string
                  description: Environment variables
              commands:
                type: array
                items:
                  type: string
                  description: Execution list
              containerPorts:
                type: array
                items:
                  type: integer
                  description: Container ports
              containerData:
                type: string
                description: >-
                  Directory the data is stored and what dir is tied to the system
                  folder
              cpu:
                type: number
                description: CPU amount requesting
              ram:
                type: integer
                description: Ram amount requesting in MB
              hdd:
                type: integer
                description: Storage space requesting in GB
              tiered:
                type: boolean
                description: >-
                  If set to true you will also need following key/value pairs to
                  provide tiered info. If false do not add the following key/value
                  pairs.
              cpubasic:
                type: number
                description: CPU amount
              cpusuper:
                type: number
                description: CPU amount
              cpubamf:
                type: number
                description: CPU amount
              rambasic:
                type: integer
                description: Ram amount in MB
              ramsuper:
                type: integer
                description: Ram amount in MB
              rambamf:
                type: integer
                description: Ram amount in MB
              hddbasic:
                type: integer
                description: Storage space in GB
              hddsuper:
                type: integer
                description: Storage space in GB
              hddbamf:
                type: integer
                description: Storage space in GB
              secrets:
                type: string
                description: >-
                  Encrypted environmental accessible to selected Enterprise Nodes only.
              repoauth:
                type: string
                description: >-
                  Docker image authentication for private images in the format of username:apikey. This field will be encrypted and accessible to selected Enterprise Nodes only.
        contacts:
          type: array
          items:
            type: string
            description: Mail list
        description:
          type: string
          description: Description of app    
        expire:
          type: integer
          description: Number of blocks after apps expire 
        geolocation:
          type: array
          items:
            type: string
            description: Geolocation symbols 
        hash:
          type: string
          description: Transation hash
        height:
            type: integer
            description: Block height
        instances:
          type: integer
          description: Instances number             
        nodes:
          type: array
          items:
            type: string
            description: Enterprise Nodes IP list          
        owner:
          type: string
          description: Your FluxID    
        staticip:
          type: boolean
          enum:
           - true
           - false
          description: >-
            If set to true apps will be installed of nodes with static IP only.
        version:
          type: integer
          description: Version of message which is 7
    appsresources:
      type: object
      properties:
        appsCpusLocked:
          type: number
          description: Amount of cores app is using
        appsRamLocked:
          type: integer
          description: Amount of ram app is using
        appsHddLocked:
          type: integer
          description: Amount of disk space app is using
    appspecification:
      type: object
      properties:
        version:
          type: integer
          description: Version of message which is 7
        name:
          type: string
          description: Name of app
        description:
          type: string
          description: Description of app
        owner:
          type: string
          description: Your FluxID
        compose:
          type: array
          items:
            type: object
            description: component specification
            properties:
              name:
                type: string
                description: Name of app
              description:
                type: string
                description: Description of component
              repotag:
                type: string
                description: 'Repotag of docker image in this format `namespace/repository:tag`'
              ports:
                type: array
                items:
                  type: integer
                  description: Ports list
              domains:
                type: array
                items:
                  type: string
                  description: Domain list
              enviromentParameters:
                type: array
                items:
                  type: string
                  description: Environment variables
              commands:
                type: array
                items:
                  type: string
                  description: Execution list
              containerPorts:
                type: array
                items:
                  type: integer
                  description: Container ports
              containerData:
                type: string
                description: >-
                  Directory the data is stored and what dir is tied to the system
                  folder
              cpu:
                type: number
                description: CPU amount requesting
              ram:
                type: integer
                description: Ram amount requesting in MB
              hdd:
                type: integer
                description: Storage space requesting in GB
              tiered:
                type: boolean
                description: >-
                  If set to true you will also need following key/value pairs to
                  provide tiered info. If false do not add the following key/value
                  pairs.
              cpubasic:
                type: number
                description: CPU amount
              cpusuper:
                type: number
                description: CPU amount
              cpubamf:
                type: number
                description: CPU amount
              rambasic:
                type: integer
                description: Ram amount in MB
              ramsuper:
                type: integer
                description: Ram amount in MB
              rambamf:
                type: integer
                description: Ram amount in MB
              hddbasic:
                type: integer
                description: Storage space in GB
              hddsuper:
                type: integer
                description: Storage space in GB
              hddbamf:
                type: integer
                description: Storage space in GB
              secrets:
                type: string
                description: >-
                  Array of strings of Secret Environmental Parameters. This will be encrypted and accessible to selected Enterprise Nodes only.
              repoauth:
                type: string
                description: >-
                  Docker image authentication for private images in the format of username:apikey. This field will be encrypted and accessible to selected Enterprise Nodes only.
        instances:
          type: integer
          description: Instances number             
        contacts:
          type: array
          items:
            type: string
            description: Mail list
        geolocation:
          type: array
          items:
            type: string
            description: Geolocation symbols 
        expire:
          type: integer
          description: Number of blocks after apps expire 
        nodes:
          type: array
          items:
            type: string
            description: Enterprise Nodes IP list          
        staticip:
          type: boolean
          description: >-
            If set to true apps will be installed of nodes with static IP only.
    daemongetinfo:
      type: object
      properties:
        version:
          type: integer
          description: The server version
        protocolversion:
          type: integer
          description: The protocol version
        walletversion:
          type: integer
          description: The wallet version
        balance:
          type: number
          description: The total Flux balance of the wallet
        blocks:
          type: integer
          description: The current number of blocks processed in the server
        timeoffset: 
          type: integer
          description: The time offset
        connections:
          type: integer
          description: The number of connections
        proxy:
          type: string
          description: The proxy used by the server
        difficulty:
          type: number
          description: The current difficulty
        testnet:
          type: boolean
          description: If the server is using testnet or not
        keypoololdest:
          type: integer
          description: >-
            The timestamp (seconds since GMT epoch) of the oldest pre-generated
            key in the key pool
        keypoolsize:
          type: integer
          description: How many new keys are pre-generated
        paytxfee:
          type: number
          description: The transaction fee set at FLUX/kB
        relayfee:
          type: number
          description: Minimum relay fee for non-free transactions in FLUX/kB
        errors:
          type: string
          description: Any error messages
    geolocation:
      type: object
      properties:
        ip:
          type: string
          description: IP address
        continent:
          type: string
          description: Continent name
        continentCode:
          type: string
          description: Continent code
        country:
          type: string
          description: Country name
        countryCode:
          type: string
          description: Continent code
        region:
          type: string
          description: Region code
        regionName:
          type: string
          description: Region name
        lat:
          type: number
          description: Latitude parameter
        lon: 
          type: number
          description: Longitude parameter
        org: 
          type: string
          description: Organization name
    fluxnodestatus:
      type: object
      properties:
        status:
          type: string
          description: FluxNode status
        collateral:
          type: string
          description: Collateral transaction
        txhash:
          type: string
          description: Collateral transaction hash
        outidx:
          type: integer
          description: Collateral transaction output index number
        ip:
          type: string
          description: FluxNode network address
        network:
          type: string
          description: 'Network type (IPv4, IPv6, onion)'
        added_height:
          type: integer
          description: Block height when FluxNode was added
        confirmed_height:
          type: integer
          description: Block height when FluxNode was confirmed
        last_confirmed_height:
          type: integer
          description: Last block height when FluxNode was confirmed
        last_paid_height:
          type: integer
          description: Last block height when FluxNode was paid
        tier:
          type: string
          description: Tier (CUMULUS/NIMMBUS/STRATUS)
        payment_address:
          type: string
          description: FLUX address for FluxNode payments
        pubkey:
          type: string
          description: FluxNode public key used for message broadcasting
        activesince:
          type: string
          description: >-
            The time in seconds since epoch (Jan 1 1970 GMT) FluxNode has been
            active
        lastpaid:
          type: string
          description: >-
            The time in seconds since epoch (Jan 1 1970 GMT) FluxNode was last
            paid
        amount:
          type: string
          description: Locked collateral amount
    containerinfo:
      type: array
      items:
        type: object
        properties:
          Id:
            type: string
            description: ID of this container
          Names:
            type: array
            items:
              type: string
              description: The names that this container has been given
          Image:
            type: string
            description: The name of the image used when creating this container
          ImageID:
            type: string
            description: The ID of the image that this container was created from
          Command:
            type: string
            description: Command to run when starting the container
          Created:
            type: integer
            description: When the container was created in epoch time
          Ports:
            type: array
            items:
              type: object
              properties:
                PrivatePort:
                  type: integer
                  description: Port on the container
                Type:
                  type: string
                  enum:
                    - tcp
                    - udp
                    - sctp
                  description: 'tcp, udp, sctp'
                IP:
                  type: string
                  description: Host IP address that the container's port is mapped to
                PublicPort:
                  type: integer
                  description: Port exposed on the host
                HostConfig:
                  type: object
                  properties:
                    NetworkMode:
                      type: string
                      description: Network mode of container
                NetworkSettings:
                  type: object
                  description: A summary of the container's network settings
                  properties:
                    Networks:
                      type: object
                      description: Configuration for a network endpoint.
                      properties:
                        fluxDockerNetwork:
                          $ref: '#/components/schemas/fluxnetwork'
                Mounts:
                  $ref: '#/components/schemas/mounts'
          Labels:
            type: object
            description: User-defined key/value metadata
            properties:
              description:
                type: string
                description: Description of app
              maintainer:
                type: string
                description: Name/alias of creator/maintainer of app
              repository:
                type: string
                description: Url to repository
              version:
                type: number
                description: Version number
          State:
            type: string
            description: State/status of the container
          Status:
            type: string
            description: Additional human-readable status of this container
    mounts:
      type: array
      items:
        type: object
        properties:
          Type:
            type: string
            enum:
              - bind
              - volume
              - tmpfs
              - npipe
            description: Mount type
          Source:
            type: string
            description: Path of dir to mount
          Destination:
            type: string
            description: Dir of container to bind mount
          Mode:
            type: string
            description: Bind mount mode
          RW:
            type: boolean
            description: Whether the mount should be read-write
          Propagation:
            type: string
            enum:
              - private
              - rprivate
              - shared
              - rshared
              - slave
              - rslave
            description: >-
              A propagation mode with the value [r]private, [r]shared, or
              [r]slave.
    fluxnetwork:
      type: object
      properties:
        IPAMConfig:
          type: string
          description: EndpointIPAMConfig represents an endpoint's IPAM configuration
        Links:
          type: string
          description: Links
        Aliases:
          type: string
          description: Aliases
        NetworkID:
          type: string
          description: Unique ID of the network
        EndpointID:
          type: string
          description: Unique ID for the service endpoint in a Sandbox
        Gateway:
          type: string
          description: Gateway address for this network
        IPAddress:
          type: string
          description: IPv4 address
        IPPrefixLen:
          type: string
          description: Mask length of the IPv4 address
        IPv6Gateway:
          type: string
          description: IPv6 gateway address
        GlobalIPv6Address:
          type: string
          description: Global IPv6 address
        GlobalIPv6PrefixLen:
          type: string
          description: Mask length of the global IPv6 address
        MacAddress:
          type: string
          description: MAC address for the endpoint on this network
        DriverOpts:
          type: string
          description: >-
            DriverOpts is a mapping of driver options and values. These options
            are passed directly to the driver and are driver specific.
    # Response Schemas
    UnauthorizedError:
      type: object
      description: Authentication/authorization error
      properties:
        status:
          type: string
          enum:
            - error
        data:
          type: object
          properties:
            name:
              type: string
              example: 'UnauthorizedAccess'
            message:
              type: string
              example: 'Unauthorized. Invalid signature or insufficient privilege.'
            code:
              type: string
              example: 'UNAUTHORIZED'
    ValidationError:
      type: object
      description: Input validation error
      properties:
        status:
          type: string
          enum:
            - error
        data:
          type: object
          properties:
            name:
              type: string
              example: 'ValidationError'
            message:
              type: string
              example: 'Invalid input parameters'
            code:
              type: string
              example: 'VALIDATION_ERROR'
            details:
              type: array
              description: Detailed validation errors
              items:
                type: object
                properties:
                  field:
                    type: string
                    description: Field name that failed validation
                  message:
                    type: string
                    description: Validation error message
    InternalServerError:
      type: object
      description: Internal server error
      properties:
        status:
          type: string
          enum:
            - error
        data:
          type: object
          properties:
            name:
              type: string
              example: 'InternalError'
            message:
              type: string
              example: 'Internal server error occurred'
            code:
              type: string
              example: 'INTERNAL_ERROR'
    ServiceUnavailableError:
      type: object
      description: Service temporarily unavailable
      properties:
        status:
          type: string
          enum:
            - error
        data:
          type: object
          properties:
            name:
              type: string
              example: 'ServiceUnavailable'
            message:
              type: string
              example: 'Service is temporarily unavailable'
            code:
              type: string
              example: 'SERVICE_UNAVAILABLE'
  responses:
    OperationAccepted:
      description: >-
        The work was accepted and is running. Poll the `statusUrl` — completion
        is read from the operation's `status` field, never from this response.
      headers:
        Location:
          description: The operation's status URL
          schema:
            type: string
        Operation-Id:
          description: The operation id
          schema:
            type: string
        Retry-After:
          description: Seconds to wait before the first poll
          schema:
            type: integer
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                $ref: '#/components/schemas/status'
              data:
                type: object
                properties:
                  jobId:
                    type: string
                  statusUrl:
                    type: string
                  status:
                    type: string
          example:
            status: success
            data:
              jobId: op_2f8f1a1c-1a2b-4c3d-9e8f-0a1b2c3d4e5f
              statusUrl: /apps/operations/op_2f8f1a1c-1a2b-4c3d-9e8f-0a1b2c3d4e5f
              status: Running
    UnauthorizedError:
      description: Authentication failed or insufficient privileges
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UnauthorizedError'
    ValidationError:
      description: Input validation failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationError'
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalServerError'
    ServiceUnavailableError:
      description: Service temporarily unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ServiceUnavailableError'
  securitySchemes:
    FluxID:
      description: >-
        FluxID (formerly ZelID) is an authentication system based on Bitcoin message signing and Ethereum personal sign.
        The header keeps its original name, `zelidauth`: a query string of zelid,
        signature and loginPhrase (see Authentication Workflows for how to obtain
        one). An example of a header is
        `zelid=1CbErtneaX2QVyUfwU7JGB7VzvPgrgc3uC&signature=%2BZB3oSrsw6XkBxxlbwk33LEBJYvqtbMIm2kL9JzuoXMC6pSZd0lBHdnhJYzMTXv81zZQ7G%2FpkK1NvYN7cNF0GE%3D&loginPhrase=1574991374806spbcvsuwerl52tppx9dw5khuz8rew13mkq86gg8r2c`
      type: apiKey
      in: header
      name: zelidauth
