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.
| Resource | List type (Simple*) | Detail type (full) | Extra fields on the full type |
|---|---|---|---|
| Payments environment | SimplePaymentsEnvironment | PaymentsEnvironment | wallet_count, api_key_count, webhook_endpoint_count |
| Payments wallet | SimplePaymentsWallet | PaymentsWallet | balance (balance, received, sent), node_permissions |
| Payments transaction | SimplePaymentsTransaction | PaymentsTransaction | metadata, invoice, network_fee, service_fee |
| Webhook endpoint | SimpleWebhookEndpoint | WebhookEndpoint | event_filters, active, failure_count, last_failure_at |
| Webhook event | SimpleWebhookEvent | WebhookEvent | payload, response_status, response_body, attempts |
| Rails node | SimpleNode | DeployedNode | pubkey, state, network, type, node_type, sockets, partner_count |
| Taproot asset | AvailableTaprootAsset | BitcoinAsset | type (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: