Rain SDK

A modern, type-safe Rust SDK for the Rain Cards API.
Features
- ✅ Async and Sync Support: Use async/await or blocking operations via feature flags
- ✅ Type Safety: Strongly typed models for all API endpoints
- ✅ API Key Authentication: Simple API key-based authentication
- ✅ Comprehensive Error Handling: Detailed error types with context
- ✅ Production Ready: Well-tested and documented
Installation
Add this to your Cargo.toml:
[]
= { = "0.1.0", = ["async"] }
For blocking/sync operations:
[]
= { = "0.1.0", = ["sync"] }
Quick Start
Async Example
use ;
use InitiateUserApplicationRequest;
use Uuid;
async
Sync Example
use ;
use InitiateUserApplicationRequest;
Authentication
The SDK supports API key authentication:
let auth = with_api_key;
Examples
See the examples directory for usage examples:
- Basic Client - Initialize a client and make simple API calls
- Initiate User Application - Initiate a user application
- Consumer Signup - Complete consumer signup workflow
- Corporate Signup - Complete corporate signup workflow
- Manage Corporate Users - Manage users in corporate programs (add, deactivate, delete)
Run an example:
API Coverage
The SDK provides typed methods for all major Rain API endpoints:
Company Applications
- Create Company Application: Create a new company application
- Get Company Application: Retrieve company application by ID
- Update Company Application: Update company application details
- Update UBO: Update ultimate beneficial owner information
- Upload Company Document: Upload documents for company verification
- Upload UBO Document: Upload documents for UBO verification
User Applications
- Create User Application: Create a new user application
- Initiate User Application: Initiate a user application with basic info
- Get User Application: Retrieve user application by ID
- Update User Application: Update user application details
- Upload User Document: Upload documents for user verification
Error Handling
The SDK uses a comprehensive error type system:
use RainError;
match client.get_user_application.await
Configuration
Environment Selection
// Dev (default)
let config = new;
// Production
let config = new;
// Custom URL
let config = new;
Custom Configuration
let config = new
.with_timeout // 60 second timeout
.with_user_agent
.with_logging;
Features
default: Enables async support with rustls-tlsasync: Async/await support (requires tokio)sync: Blocking/synchronous operationsrustls-tls: Use rustls for TLS (default)native-tls: Use native TLS implementationgzip: Enable gzip compressionjson: JSON serialization support (enabled by default)
Documentation
- Signup Guide - Complete guide for signing up customers (Consumer and Corporate programs)
- Managing Users Guide - Guide for managing users in corporate programs (add, deactivate, delete)
- Managing Cards Guide - Guide for issuing and managing cards (virtual, physical, bulk shipping, encrypted details)
License
Licensed under the MIT license (LICENSE).
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.