2 releases
| 0.1.1 | Dec 28, 2025 |
|---|---|
| 0.1.0 | Dec 27, 2025 |
#23 in #query-parameters
Used in nylas-api
255KB
5K
SLoC
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:
GrantIdMessageIdDraftIdEventIdCalendarIdContactIdFolderIdThreadIdWebhookIdAttachmentId
Query Parameter Types
MessageQueryParams- Query parameters for listing messagesEventQueryParams- Query parameters for listing eventsContactQueryParams- 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
Dependencies
~1.6–2.8MB
~60K SLoC