Skip to content

Commit 078ec0a

Browse files
committed
docs: Update readme
1 parent f06236c commit 078ec0a

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

README.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
- [conda & make](#conda--make)
2525
- [For development](#for-development)
2626
- [Using conda](#using-conda)
27+
- [Management script](#management-script)
2728
- [Authentication](#authentication)
2829
- [Quick Start](#quick-start)
2930
- [Advanced Configuration](#advanced-configuration)
@@ -34,6 +35,8 @@
3435
- [Logging & Debugging](#logging--debugging)
3536
- [IDE Autocompletion & DX](#ide-autocompletion--dx)
3637
- [URL path](#url-path)
38+
- [Performance & Architecture](#performance--architecture)
39+
- [Security Guardrails](#security-guardrails)
3740
- [Request examples](#request-examples)
3841
- [Full list of supported endpoints](#full-list-of-supported-endpoints)
3942
- [Send API (v3.1)](#send-api-v31)
@@ -127,6 +130,26 @@ make dev-full
127130
conda activate mailjet-dev
128131
```
129132

133+
#### Management script
134+
135+
We provide a universal management script (`manage.sh`) to simplify local development, testing, and linting.
136+
137+
```bash
138+
# 1. Setup the conda environment and pre-commit hooks
139+
./manage.sh env_setup
140+
conda activate mailjet-dev
141+
142+
# 2. Run the test suite (Unit + Integration)
143+
./manage.sh test_all
144+
145+
# 3. Run the performance profilers
146+
./manage.sh perf_bench
147+
148+
# 4. Format and lint the code
149+
./manage.sh format
150+
./manage.sh lint
151+
```
152+
130153
## Authentication
131154

132155
The Mailjet Email API uses your API and Secret keys for authentication. [Grab][api_credential] and save your Mailjet API credentials securely in your environment variables.
@@ -289,6 +312,23 @@ mailjet = Client(auth=(api_key, api_secret), version="v1")
289312
result = mailjet.data_images.get()
290313
```
291314

315+
## Performance & Architecture
316+
317+
The Mailjet SDK `v1.6.0+` has been heavily optimized for high-concurrency and memory-constrained environments (like AWS Lambda).
318+
It utilizes `__slots__` for memory density, immutable `MappingProxyType` headers for zero-allocation merging, and O(1) dynamic endpoint caching.
319+
320+
For a detailed breakdown of our nanosecond routing benchmarks and instructions on how to profile the SDK, please read our [Performance & Architecture Guide](PERFORMANCE.md).
321+
322+
## Security Guardrails
323+
324+
The SDK includes active protections against common API vulnerabilities:
325+
326+
- **SSRF & Open Redirects:** Hard-disabled automatic redirects and enforced strict hostname validation.
327+
- **CRLF Injection:** Native string evaluation blocks header injection attempts via compromised Bearer tokens or custom headers.
328+
- **PEP 578 Audit Hooks:** The SDK emits native Python audit events (`sys.audit`) for all outbound network egress and explicitly warns if TLS verification is bypassed.
329+
330+
See our [SECURITY.md](SECURITY.md) for our vulnerability disclosure policy and supported versions.
331+
292332
## Request examples
293333

294334
### Full list of supported endpoints

0 commit comments

Comments
 (0)