nylas-types

Crates.ionylas-types
lib.rsnylas-types
version0.1.1
created_at2025-12-27 22:22:22.853505+00
updated_at2025-12-28 07:08:20.444609+00
descriptionType definitions for Nylas API v3
homepage
repositoryhttps://github.com/mqasimca/nylas-rust
max_upload_size
id2007925
size296,250
Qasim (mqasimca)

documentation

README

nylas-types

Type definitions for the Nylas API v3.

This crate provides strongly-typed Rust structures for all Nylas API resources, including messages, events, calendars, contacts, and more.

Features

  • ✅ Complete type coverage for Nylas API v3
  • ✅ NewType pattern for type-safe IDs (GrantId, MessageId, etc.)
  • ✅ Builder patterns for complex request types
  • ✅ Serde serialization/deserialization
  • ✅ Validated types (EmailAddress, etc.)
  • ✅ Zero-copy where possible with bytes::Bytes

Usage

Add this to your Cargo.toml:

[dependencies]
nylas-types = "0.1"

Example

use nylas_types::{GrantId, MessageId, EmailAddress};

// Type-safe IDs prevent mixing up different ID types
let grant_id = GrantId::new("grant_123");
let message_id = MessageId::new("msg_456");

// Validated email addresses
let email = EmailAddress::new("user@example.com")?;

Core Types

Resource Types

  • Messages - Email message types
  • Drafts - Draft message types
  • Events - Calendar event types
  • Calendars - Calendar types
  • Contacts - Contact types
  • Folders - Folder/label types
  • Threads - Thread types
  • Grants - Grant/authentication types
  • Webhooks - Webhook types
  • Attachments - File attachment types

ID Types (NewType Pattern)

All IDs use the NewType pattern for compile-time safety:

  • GrantId
  • MessageId
  • DraftId
  • EventId
  • CalendarId
  • ContactId
  • FolderId
  • ThreadId
  • WebhookId
  • AttachmentId

Query Parameter Types

  • MessageQueryParams - Query parameters for listing messages
  • EventQueryParams - Query parameters for listing events
  • ContactQueryParams - Query parameters for listing contacts
  • And more...

Type Safety

This crate emphasizes type safety:

use nylas_types::{GrantId, MessageId};

let grant_id = GrantId::new("grant_123");
let message_id = MessageId::new("msg_456");

// This won't compile - type safety prevents mixing up IDs!
// let wrong: &MessageId = &grant_id;  // ❌ Compile error

Builder Patterns

Complex types use the builder pattern:

use nylas_types::SendMessageRequest;

let message = SendMessageRequest::builder()
    .to("recipient@example.com")
    .subject("Hello")
    .body("Message body")
    .build();

Documentation

License

MIT

Commit count: 0

cargo fmt