Expand description
JMAP Object Metadata extension data types.
Implements the data types defined in draft-ietf-jmap-metadata-01. Types only — no method handlers, no async, no network I/O.
§Module layout
metadata—Metadata,Annotation,ImapMetadata,WebDavMetadata(§2)capability—MetadataCapability,JMAP_METADATA_URI(§1.2.1)filter—MetadataFilterCondition(§3.4.1)backend—MetadataPropertyandJmapObjecttrait impls
All public types are re-exported at the crate root.
§Example
use jmap_metadata_types::{Annotation, Metadata};
let json = r#"{
"@type": "Annotation",
"id": "MD789",
"relatedType": "Email",
"relatedId": "EM456",
"isPrivate": true,
"acme.example.com:workflowState": "pending-review"
}"#;
let meta: Metadata = serde_json::from_str(json).unwrap();
match meta {
Metadata::Annotation(Annotation { ref related_type, ref extra, .. }) => {
assert_eq!(related_type, "Email");
assert_eq!(
extra.get("acme.example.com:workflowState"),
Some(&serde_json::Value::String("pending-review".into())),
);
}
_ => panic!("expected Annotation variant"),
}Re-exports§
pub use backend::MetadataProperty;pub use capability::MetadataCapability;pub use capability::JMAP_METADATA_URI;pub use filter::MetadataFilterCondition;pub use metadata::Annotation;pub use metadata::ImapMetadata;pub use metadata::Metadata;pub use metadata::WebDavMetadata;
Modules§
- backend
- Property selector enum and
jmap_typestrait impls forcrate::Metadata. - capability
- draft-ietf-jmap-metadata-01 §1.2.1 — capability registration and account-level capability object.
- filter
- draft-ietf-jmap-metadata-01 §3.4.1 — Metadata/query filter condition.
- metadata
- draft-ietf-jmap-metadata-01 §2 — Metadata object types.