{"record":{"id":"e762feb6b0476eb6","repo":"nautechsystems/nautilus_trader","slug":"unsupported-aggregation-other","errorCode":null,"errorMessage":"Unsupported aggregation: {other}","messagePattern":"Unsupported aggregation: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/coinbase/src/common/parse.rs","lineNumber":150,"sourceCode":"    match spec.aggregation {\n        BarAggregation::Minute => match step {\n            1 => Ok(CoinbaseGranularity::OneMinute),\n            5 => Ok(CoinbaseGranularity::FiveMinute),\n            15 => Ok(CoinbaseGranularity::FifteenMinute),\n            30 => Ok(CoinbaseGranularity::ThirtyMinute),\n            _ => anyhow::bail!(\"Unsupported minute step: {step}\"),\n        },\n        BarAggregation::Hour => match step {\n            1 => Ok(CoinbaseGranularity::OneHour),\n            2 => Ok(CoinbaseGranularity::TwoHour),\n            6 => Ok(CoinbaseGranularity::SixHour),\n            _ => anyhow::bail!(\"Unsupported hour step: {step}\"),\n        },\n        BarAggregation::Day => match step {\n            1 => Ok(CoinbaseGranularity::OneDay),\n            _ => anyhow::bail!(\"Unsupported day step: {step}\"),\n        },\n        other => anyhow::bail!(\"Unsupported aggregation: {other}\"),\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use rstest::rstest;\n\n    use super::*;\n\n    #[rstest]\n    #[case(\n        \"BTC-USD.COINBASE-1-MINUTE-LAST-EXTERNAL\",\n        CoinbaseGranularity::OneMinute\n    )]\n    #[case(\n        \"BTC-USD.COINBASE-5-MINUTE-LAST-EXTERNAL\",\n        CoinbaseGranularity::FiveMinute\n    )]","sourceCodeStart":132,"sourceCodeEnd":168,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/coinbase/src/common/parse.rs#L132-L168","documentation":"`bar_type_to_granularity` only handles `Minute`, `Hour`, and `Day` aggregations. Any other `BarAggregation` (e.g. `Tick`, `Volume`, `Dollar` value bars) has no Coinbase granularity equivalent and is rejected with this error.","triggerScenarios":"Passing a `BarType` with a non-time-based aggregation — such as `Tick`, `Volume`, or `Value` bars — into `request_bars` against the Coinbase data client.","commonSituations":"Strategies configured with tick/volume bars reused across exchanges; forgetting that REST candle endpoints can only serve time-based bars.","solutions":["Use a time-based bar type (Minute/Hour/Day) with the Coinbase data client.","Generate tick- or volume-based bars internally via Nautilus aggregators fed by trades, not via Coinbase candle requests.","Validate the aggregation kind in config before constructing the bar request."],"exampleFix":"// before\n\"BTC-USD.COINBASE-100-VOLUME.INTERNAL\"\n// after: request trades and aggregate volume bars internally\n\"BTC-USD.COINBASE-1-MINUTE.INTERNAL\" // or use a local VolumeBar aggregator on trades","handlingStrategy":"validation","validationCode":"match bar_type.spec().aggregation {\n    BarAggregation::Minute | BarAggregation::Hour | BarAggregation::Day => {},\n    other => return Err(anyhow!(\"Coinbase data client supports time bars only, got {other}\")),\n}","typeGuard":null,"tryCatchPattern":"match bar_type_to_granularity(&bar_type) {\n    Ok(g) => request_candles(g),\n    Err(e) if e.to_string().contains(\"Unsupported aggregation\") => {\n        // route to trade-based internal aggregation instead of REST candles\n        subscribe_trades_and_aggregate(&bar_type);\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["Only request Minute/Hour/Day bars from Coinbase REST candles","Produce tick/volume/value bars via Nautilus internal aggregators on trades","Validate aggregation kind in strategy configuration before requesting data"],"tags":["coinbase","bars","aggregation","configuration"],"backgroundTag":"unsupported-enum-value","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}