| Crates.io | nylas-api |
| lib.rs | nylas-api |
| version | 0.1.1 |
| created_at | 2025-12-27 22:23:49.690335+00 |
| updated_at | 2025-12-28 07:08:47.438342+00 |
| description | API resource implementations for Nylas SDK |
| homepage | |
| repository | https://github.com/mqasimca/nylas-rust |
| max_upload_size | |
| id | 2007928 |
| size | 238,437 |
API resource implementations for the Nylas API v3.
This crate provides resource-specific API clients for all Nylas resources, including messages, events, calendars, contacts, and more.
Add this to your Cargo.toml:
[dependencies]
nylas-api = "0.1"
nylas-types = "0.1"
tokio = { version = "1.35", features = ["full"] }
use nylas_api::resources::Messages;
use nylas_core::http::{HttpClient, HttpConfig};
use nylas_types::{GrantId, MessageQueryParams};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Setup HTTP client
let config = HttpConfig::builder("api_key").build()?;
let http = HttpClient::new(config)?;
// Create resource client
let messages = Messages::new(http);
let grant_id = GrantId::new("grant_123");
// List messages with filters
let params = MessageQueryParams::builder()
.subject("invoice")
.unread(true)
.limit(50)
.build();
let results = messages.list(&grant_id, Some(params)).await?;
println!("Found {} messages", results.len());
Ok(())
}
use nylas_api::resources::Messages;
use nylas_types::SendMessageRequest;
let messages = Messages::new(http);
// Send an email
let request = SendMessageRequest::builder()
.to("recipient@example.com")
.subject("Hello")
.body("Message content")
.build();
let sent = messages.send(&grant_id, request).await?;
use nylas_api::resources::Events;
use nylas_types::CreateEventRequest;
let events = Events::new(http);
let request = CreateEventRequest::builder()
.title("Team Meeting")
.when(when)
.build();
let event = events.create(&grant_id, "calendar_id", request).await?;
use nylas_api::resources::Calendars;
let calendars = Calendars::new(http);
// List all calendars
let all_calendars = calendars.list(&grant_id).await?;
// Check availability
let availability = calendars.availability(&grant_id, params).await?;
use nylas_api::resources::Webhooks;
use nylas_types::CreateWebhookRequest;
let webhooks = Webhooks::new(http);
let request = CreateWebhookRequest::builder()
.trigger_types(vec!["message.created"])
.webhook_url("https://example.com/webhook")
.build();
let webhook = webhooks.create(request).await?;
All list operations support automatic pagination:
// Get first page
let first_page = messages.list(&grant_id, None).await?;
// Use iterator for all pages
let mut pages = messages.pages(&grant_id, None);
while let Some(page) = pages.next_page().await? {
for message in page.data {
println!("Message: {}", message.id);
}
}
Use builder patterns for complex queries:
use nylas_types::MessageQueryParams;
let params = MessageQueryParams::builder()
.subject("invoice")
.from("billing@company.com")
.unread(true)
.has_attachment(true)
.received_after(timestamp)
.limit(100)
.build();
MIT