Data Retention Policy — Azure AI Weather
Version: 1.0.0 Effective date: 15 July 2026 Last reviewed: 15 July 2026
Revision history
| Version | Date | Summary |
|---|---|---|
| 1.0.0 | 2026-07-15 | Initial retention schedule |
1. Purpose
This policy defines how long Azure AI Weather retains personal and operational data, and when data is deleted or anonymised.
Aligned with GDPR storage limitation (Art. 5(1)(e)).
2. Retention schedule
| Data category | Retention period | Deletion method |
|---|---|---|
| Account profile | Life of account + 30 days | Account deletion API |
| Password hash | Until password change or account deletion | Overwritten / deleted |
| Email verification tokens | 48 hours | Auto-expire + consume on use |
| Password reset tokens | 2 hours | Single-use + auto-expire |
| JWT refresh tokens | 30–90 days | Rotation + logout |
| Auth device sessions | Until logout or 90 days inactive | Session revocation |
| IP binding records | 90 days after last login | Rolling cleanup (planned) |
| Black Box voyages | 2 years default; user-deletable anytime | DELETE /api/privacy/voyages |
| Black Box JSONL archives | Orphaned after session deletion; purged on retention job | Background job (planned) |
| Chat memory (Pro) | 90 days inactive session | TTL job (planned) |
| Anonymous public chat | 30 days (session-based) | TTL job (planned) |
| Messaging (DM / global) | Life of account | Account deletion |
| SOS / radio events | 1 year | Retention job |
| Consent records | 7 years (legal proof) | Anonymised after account deletion where permitted |
| Privacy audit log | 2 years | Rolling archive |
| Security logs | 90 days | PII-redacted rolling logs |
| Founder ground-truth JSONL | Research agreement term | Anonymisation |
| Billing records | 7 years | Legal obligation |
| IoT weather station readings | Environmental — not personal | Indefinite (aggregated) |
3. User-initiated deletion
Users can delete:
| Action | API |
|---|---|
| Full account | DELETE /api/privacy/account |
| Voyage / Black Box history | DELETE /api/privacy/voyages or /blackbox |
| Chat memory | DELETE /api/privacy/chats |
| Export before deletion | GET /api/privacy/export |
Deletion is irreversible except where legal retention requires preservation (e.g. billing).
4. Automated retention
Run daily via ops cron:
python manage.py retention
# or: python manage.py retention --dry-run
Implementation: core/privacy/retention.py
| Job | Default | Env override |
|---|---|---|
| Expired refresh tokens | at expiry | — |
| Expired / used verify & reset tokens | at expiry | — |
| Inactive / revoked auth sessions | 90 days | RETENTION_AUTH_SESSION_DAYS |
| Chat memory turns | 90 days | RETENTION_CHAT_DAYS |
| Orphan Black Box sessions (no owner) | 30 days | RETENTION_ORPHAN_BB_DAYS |
| Stale IP bindings | 90 days | RETENTION_IP_BINDING_DAYS |
| Privacy audit events | 730 days | RETENTION_AUDIT_DAYS |
| RTDN Pub/Sub message IDs | 48 hours | RETENTION_RTDN_REPLAY_HOURS |
Roadmap (not yet automated): GPS coarsening after 1 year; SOS event purge.
5. Backups
Database backups may retain deleted data until backup rotation (max 14 days). Backups are encrypted and access-controlled.
6. Contact
Operator
Diogo Botelho Moniz
Trading as
Azure AI Weather
A FrontSea Intelligence product
Portugal
Contact: contact@azureai.pt
*See also PRIVACY_POLICY.md and USER_RIGHTS.md.*