Open Web App v1.0 REST

API Documentation

REST API Documentation & Interactive cURL Reference for Reminder Service

API Environment & Dynamic URLs

Target URLs and sample cURL commands are dynamically generated from the current host.

Domain: local v1.0 REST

Modifying this URL immediately updates all sample cURL commands across the entire page.

Tokens are automatically injected into cURL commands with -H "Authorization: Bearer <token>".
API Standards & Architecture Guide
JSON Envelope

Standard envelope with status: "success"|"error", human-readable message, and data.

Bearer Auth & Privacy

Protected endpoints require JWT in Authorization: Bearer <token>. Reminders are strictly private to creator.

Redis Auto-Invalidation

Fast caching (TTL 3600s). Mutations auto-invalidate targeted keys ({domain}:reminders:*) with no manual reset needed.

Multi-Domain Storage: Data is flat JSON in data/ namespaced per domain (data/{username}_{domain}.json, data/users_{domain}.json, data/reminders_{domain}.json). Supports multi-recipient dispatch (10 emails & 10 WhatsApp numbers) and recurrence schedules (hourly, daily, weekly, monthly, every 6 months, custom).
Mobile App Integration & 1-Month Persistence: The JWT token issued by /api/login has a long server lifetime (default 1 year in JWT_TTL). Mobile clients (Flutter, React Native, Swift, Kotlin) store the token in secure storage (e.g. Flutter Secure Storage / iOS Keychain / Android EncryptedSharedPreferences) along with the login timestamp, and reuse it across app launches for 30 days without re-prompting for credentials. Simply include header Authorization: Bearer <token> on all requests.

Mobile App Integration & 1-Month Session Guide

How mobile apps (Flutter, React Native, Swift, Kotlin) authenticate and persist login for 30 days

Mobile Ready
1. Sign In Once

Call POST /api/login with identifier & password. Server issues a long-lived JWT token (configured for 1 year via JWT_TTL).

2. Secure Local Storage

Save the token in device keychain/encrypted storage (e.g. Flutter Secure Storage, iOS Keychain, Android EncryptedSharedPreferences) along with the login timestamp.

3. Re-use for 1 Month

On every app launch within 30 days, bypass login screen directly to home. Pass Authorization: Bearer <token> on all subsequent API requests.

// Sample Mobile Request Headers
Authorization: Bearer <stored_jwt_token>
Content-Type: application/json
Accept: application/json
Message