List vs. Detail Types

Amboss GraphQL APIs return trimmed Simple* types for list views and full types for detail views. Understand which fields are available where.

Amboss GraphQL APIs use two complementary type variants for each resource: a trimmed Simple* type returned by list queries, and a full type returned by single-resource detail queries.

If a field you need is missing from a list result, fetch the resource by its id using the corresponding detail query to get the full type.

The pattern

List queries are optimised for rendering tables and pickers: they return only the fields needed to identify and display an item. Detail queries return the complete set of fields including computed data (balances, counters, event history) that would be expensive to resolve across a large list.

list query  →  Simple* type  (id, name, status, …)
detail query →  full type    (+ balance, events, wallet_count, …)

Type pairs

The table below maps each resource to its Simple* list type, the corresponding full detail type, and the notable fields added by the full type.

ResourceList type (Simple*)Detail type (full)Extra fields on the full type
Payments environmentSimplePaymentsEnvironmentPaymentsEnvironmentwallet_count, api_key_count, webhook_endpoint_count
Payments walletSimplePaymentsWalletPaymentsWalletbalance (balance, received, sent), node_permissions
Payments transactionSimplePaymentsTransactionPaymentsTransactionmetadata, invoice, network_fee, service_fee
Webhook endpointSimpleWebhookEndpointWebhookEndpointevent_filters, active, failure_count, last_failure_at
Webhook eventSimpleWebhookEventWebhookEventpayload, response_status, response_body, attempts
Rails nodeSimpleNodeDeployedNodepubkey, state, network, type, node_type, sockets, partner_count
Taproot assetAvailableTaprootAssetBitcoinAssettype (asset class), precision (decimal places)

AvailableTaprootAsset is the list type returned by taproot_assets.list. When you need type (e.g. NORMAL vs COLLECTIBLE) or precision for amount formatting, query the full BitcoinAsset via taproot_assets.find_one.

Examples

Listing Payments environments

The list resolver returns SimplePaymentsEnvironment — enough to render a picker:

query ListEnvironments {
  payment {
    environment {
      find_many {
        list {
          id
          name
          type
          created_at
        }
      }
    }
  }
}

Fetching the full environment

To get wallet_count and related counters, fetch the environment by id:

query GetEnvironment($id: String!) {
  payment {
    environment {
      find_one(id: $id) {
        id
        name
        type
        wallet_count
        api_key_count
        webhook_endpoint_count
        created_at
      }
    }
  }
}

Listing wallets vs. fetching balance

SimplePaymentsWallet omits balance:

query ListWallets($environment_id: String!) {
  payment {
    wallet {
      find_many(environment_id: $environment_id) {
        list {
          id
          name
          is_ready
          asset { symbol precision }
        }
      }
    }
  }
}

To read the running balance, fetch the full PaymentsWallet by id:

query GetWallet($id: String!) {
  payment {
    wallet {
      find_one(id: $id) {
        id
        name
        is_ready
        asset { symbol precision }
        balance {
          balance
          received
          sent
        }
      }
    }
  }
}

Listing Taproot assets

AvailableTaprootAsset is the type you get from the list:

query AvailableAssets {
  taproot_assets {
    list {
      id
      symbol
    }
  }
}

If you need precision (to format amounts) or type (asset class), those fields live on the full BitcoinAsset. The precision field is already included in taproot_assets.list for convenience — but type requires the detail query.

Schema reference

The live schema for all types is browsable in Apollo Studio: