This directory contains official client SDKs for ThemisDB in multiple programming languages.
New Features (All Backwards Compatible):
- ✅ Circuit Breaker Pattern: Prevents cascading failures
- ✅ Retry with Exponential Backoff: Handles transient failures
- ✅ Request/Response Logging: Comprehensive debugging support
- ✅ Connection Pooling: Efficient HTTP connection management
See SDK_ENHANCEMENTS.md for detailed documentation and usage examples.
- Path:
csharp/ - Documentation: C# SDK Documentation
- Status: Production-ready
- Path:
go/ - Documentation: Go SDK Documentation
- Status: Production-ready
- Path:
java/ - Documentation: Java SDK Documentation
- Status: Production-ready
- Path:
javascript/(HTTP/REST client) - Documentation: JavaScript SDK Quickstart
- Status: Production-ready
- Note: Binary wire protocol implementation available in
typescript/(experimental)
- Path:
php/ - Documentation: PHP SDK README
- Status: Production-ready
- Package:
composer require themisdb/themisdb-php
- Path:
python/ - Documentation: Python SDK Quickstart
- Status: Production-ready
- Path:
ruby/ - Documentation: Ruby SDK README
- Status: Production-ready
- Package:
gem install themisdb
- Path:
rust/ - Documentation: Rust SDK Quickstart
- Status: Production-ready
- Path:
swift/ - Documentation: Swift SDK Documentation
- Status: Production-ready
Each SDK directory contains its own README with language-specific installation and usage instructions.
All client SDKs have automated CI/CD workflows for building, testing, and packaging:
| SDK | CI Workflow | Status |
|---|---|---|
| Python | python-sdk-test.yml |
✅ Available (Dry-Run) |
| Java | java-sdk-test.yml |
✅ Available (Dry-Run) |
| C# | csharp-sdk-test.yml |
✅ Available (Dry-Run) |
| Go | go-sdk-test.yml |
✅ Available (Dry-Run) |
| Rust | rust-sdk-test.yml |
✅ Available (Dry-Run) |
| JavaScript/TypeScript | javascript-sdk-test.yml |
✅ Available (Dry-Run) |
| PHP | php-sdk-test.yml |
✅ Available (Dry-Run) |
| Ruby | ruby-sdk-test.yml |
✅ Available (Dry-Run) |
| Swift | swift-sdk-test.yml |
✅ Available (Dry-Run) |
Note: All workflows are in "Dry-Run" mode - they build and test packages but do not publish to package registries. Publishing steps are commented out with TODO markers for production releases.
All SDKs now support the same feature set (as of v1.8.0-rc1, April 2026):
| Feature | Python | JavaScript | Go | Rust | Java | C# | Swift | PHP | Ruby |
|---|---|---|---|---|---|---|---|---|---|
| CRUD Operations | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| AQL Queries | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Transactions | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Graph API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
- traverse() |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
- shortestPath() |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
- neighbors() |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Vector API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
- vectorSearch() |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
- vectorUpsert() |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
- vectorDelete() |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| LLM API (v1.4.0+) 🆕 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
- llmInteraction() |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
- getLlmInteraction() |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
- listLlmInteractions() |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Batch Operations | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Topology-Aware Routing | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Async/Await | ✅ | ✅ | N/A | ✅ | N/A | ✅ | ✅ | N/A | N/A |
| TLS/mTLS | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 🆕 Circuit Breaker | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| 🆕 Retry + Backoff | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| 🆕 Request/Response Logging | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Connection Pooling | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ||
| Binary Protocol | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Legend:
- ✅ = Implemented and tested
⚠️ = Implicit/Built-in (e.g., browser fetch, standard HTTP client)- ❌ = Not implemented
- 📋 = Planned (template available in Python/JavaScript clients)
- N/A = Not applicable for this language
- 🆕 = New in v1.4.0-alpha
For comprehensive SDK documentation and examples, see the docs/clients directory.