Skip to main content

Crate jmap_metadata_types

Crate jmap_metadata_types 

Source
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

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_types trait impls for crate::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.