#[derive(Debug, thiserror::Error)]
pub enum FlatError {
#[error("invalid operational template: {0}")]
InvalidTemplate(String),
#[error("failed to parse OPT 1.4 XML: {0}")]
OptParse(String),
#[error("failed to serialize to JSON: {0}")]
Serialize(#[from] serde_json::Error),
#[error("malformed simplified path {path:?}: {reason}")]
MalformedPath {
path: String,
reason: String,
},
#[error("unknown simplified path: {0}")]
UnknownPath(String),
#[error("unknown attribute suffix |{suffix} for {rm_type} at {path}")]
UnknownSuffix {
rm_type: String,
suffix: String,
path: String,
},
#[error("|other is mutually exclusive with |code/|value/|terminology at {0}")]
OtherSuffixConflict(String),
#[error("|other not allowed at {0}: the value set is closed")]
OtherOnClosedValueSet(String),
#[error("missing mandatory context field ctx/{0}")]
MissingContext(&'static str),
#[error("unknown context key ctx/{0}")]
UnknownContext(String),
#[error("{key} is required")]
MissingRequiredSuffix {
key: String,
},
#[error("invalid value at {path}: {reason}")]
InvalidValue {
path: String,
reason: String,
},
#[error("invalid |raw payload at {path}: {reason}")]
InvalidRaw {
path: String,
reason: String,
},
#[error("simplified-format conversion error: {0}")]
Conversion(String),
}