nylas-types 0.1.1

Type definitions for Nylas API v3
Documentation
# nylas-types

Type definitions for the [Nylas API v3](https://developer.nylas.com/docs/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`:

```toml
[dependencies]
nylas-types = "0.1"
```

## Example

```rust
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:

```rust
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:

```rust
use nylas_types::SendMessageRequest;

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

## Documentation

- [API Documentation]https://docs.rs/nylas-types
- [Nylas API v3 Docs]https://developer.nylas.com/docs/api/v3/
- [Main SDK Repository]https://github.com/mqasimca/nylas-rust

## License

MIT