{"record":{"id":"b8a88a7baf4bc453","repo":"nautechsystems/nautilus_trader","slug":"invalid-schema-must-be-one-of-trades-tbbo-tcbb","errorCode":null,"errorMessage":"Invalid schema. Must be one of: trades, tbbo, tcbbo, mbp-1, cmbp-1","messagePattern":"Invalid schema\\. Must be one of: trades, tbbo, tcbbo, mbp-1, cmbp-1","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/databento/src/historical.rs","lineNumber":665,"sourceCode":"\n        let first_symbol = params\n            .symbols\n            .first()\n            .ok_or_else(|| anyhow::anyhow!(\"No symbols provided\"))?;\n        let stype_in = infer_symbology_type(first_symbol);\n        let end = params.end.unwrap_or_else(|| self.clock.get_time_ns());\n        let time_range = get_date_time_range(params.start, end)?;\n        let schema = schema.unwrap_or_else(|| \"trades\".to_string());\n        let dbn_schema = dbn::Schema::from_str(&schema)?;\n\n        match dbn_schema {\n            dbn::Schema::Trades\n            | dbn::Schema::Tbbo\n            | dbn::Schema::Tcbbo\n            | dbn::Schema::Mbp1\n            | dbn::Schema::Cmbp1 => (),\n            _ => {\n                anyhow::bail!(\"Invalid schema. Must be one of: trades, tbbo, tcbbo, mbp-1, cmbp-1\")\n            }\n        }\n\n        let range_params = GetRangeParams::builder()\n            .dataset(params.dataset)\n            .date_time_range(time_range)\n            .symbols(symbols)\n            .stype_in(stype_in)\n            .schema(dbn_schema)\n            .maybe_limit(params.limit.and_then(NonZeroU64::new))\n            .build();\n\n        let price_precision_arg = params.price_precision;\n\n        let mut client = (*self.inner).clone();\n        let mut decoder = client\n            .timeseries()\n            .get_range(&range_params)","sourceCodeStart":647,"sourceCodeEnd":683,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/databento/src/historical.rs#L647-L683","documentation":"`get_range_trades` only supports trade-producing Databento schemas: trades, tbbo, tcbbo, mbp-1, cmbp-1. Any other schema in the request params triggers this bail before the data request, since other schemas' records cannot be converted to `TradeTick` results.","triggerScenarios":"Calling `get_range_trades` with `params.schema` set to e.g. `bbo-1s`, `ohlcv-1d`, `mbp-10`, or any schema outside the allow-list.","commonSituations":"Reusing a quotes request's schema (bbo/cbbo) for a trades call; schema strings sourced from config or CLI with a typo or wrong category; new Databento schemas not yet supported.","solutions":["Set `schema` to one of: trades, tbbo, tcbbo, mbp-1, cmbp-1.","For BBO-style quotes use `get_range_quotes` instead of `get_range_trades`.","Validate the schema value in your config layer before constructing the request.","If a new schema is required, extend the adapter's match arm to support it."],"exampleFix":"// before\nlet params = params.schema(dbn::Schema::Bbo1S);\nhistorical.get_range_trades(params).await?;\n// after\nlet params = params.schema(dbn::Schema::Trades);\nhistorical.get_range_trades(params).await?;","handlingStrategy":"validation","validationCode":"const TRADE_SCHEMAS: &[dbn::Schema] = &[\n    dbn::Schema::Trades, dbn::Schema::Tbbo, dbn::Schema::Tcbbo,\n    dbn::Schema::Mbp1, dbn::Schema::Cmbp1,\n];\nassert!(TRADE_SCHEMAS.contains(&schema), \"unsupported trade schema\");","typeGuard":"fn is_trade_schema(s: dbn::Schema) -> bool {\n    matches!(s, dbn::Schema::Trades | dbn::Schema::Tbbo | dbn::Schema::Tcbbo\n        | dbn::Schema::Mbp1 | dbn::Schema::Cmbp1)\n}","tryCatchPattern":null,"preventionTips":["Route quote schemas (bbo/cbbo) to get_range_quotes, not get_range_trades.","Validate schema values from config/CLI against the allow-list before requesting.","Keep the schema intent (trades vs quotes vs depth) consistent across the request pipeline."],"tags":["databento","schema","validation","historical"],"backgroundTag":"invalid-enum-value","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}