mhome-person-api 1.2.0

Space-owned person and face library contracts
Documentation
use crate::EmbeddingSpace;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct DescribeRequest {
    pub embedding_space: EmbeddingSpace,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DescribeResponse {
    pub protocol: String,
    pub epoch: String,
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn describe_rejects_unknown_fields() {
        let model = serde_json::json!({"id":"m","dimensions":2,"recognizerSha256":"a".repeat(64),"preprocessing":"rgb","normalized":true,"metric":"cosine"});
        let input = serde_json::json!({"embeddingSpace": model});
        assert!(serde_json::from_value::<DescribeRequest>(input.clone()).is_ok());
        let mut extra = input;
        extra["proposedPolicy"] = serde_json::json!({});
        assert!(serde_json::from_value::<DescribeRequest>(extra).is_err());
    }
}