1. Overview & Principle of Least Privilege
Octopus Suites adheres strictly to the Principle of Least Privilege. Permissions are requested solely when required for specific enterprise functions (such as attaching images to CRM records or sending WhatsApp voice notes). We never access, harvest, or monitor device sensors in the background without explicit user action.
2. Platform Permission Specifications
A. iOS Permissions (Info.plist)
| Permission Key | User-Facing Reason | Feature Impact if Denied |
|---|---|---|
NSCameraUsageDescription |
"Octopus Suites requires camera access to capture and attach photos and documents directly to CRM leads, quotations, and WhatsApp messages." | In-app camera shutter disabled; user must choose existing photos. |
NSPhotoLibraryUsageDescription |
"Octopus Suites requires access to your photo library to select and upload product images, quotation attachments, receipts, and chat media." | Cannot pick photos from photo gallery. |
NSPhotoLibraryAddUsageDescription |
"Octopus Suites requires permission to save generated quotations, invoices, and receipts to your photo library." | Cannot export or save images to local device gallery. |
NSMicrophoneUsageDescription |
"Octopus Suites requires microphone access to record and send voice notes in WhatsApp CRM team and customer chats." | Voice note recording button disabled. |
B. Android Permissions (AndroidManifest.xml)
| Permission Tag | Android Level | Purpose & Feature |
|---|---|---|
android.permission.INTERNET |
Normal | Core network communication with enterprise backend, Supabase realtime, and APIs. |
android.permission.ACCESS_NETWORK_STATE |
Normal | Monitors network connectivity (online/offline status) to queue offline actions. |
android.permission.CAMERA |
Dangerous (Runtime) | Capture photos of invoices, receipts, and products directly from the app. |
android.permission.RECORD_AUDIO |
Dangerous (Runtime) | Record audio voice messages in WhatsApp CRM conversations. |
android.permission.READ_MEDIA_IMAGES |
Dangerous (API 33+) | Select product photos, lead attachments, and profile pictures. |
android.permission.READ_MEDIA_VIDEO |
Dangerous (API 33+) | Select video attachments for WhatsApp broadcast campaigns. |
android.permission.READ_MEDIA_AUDIO |
Dangerous (API 33+) | Select audio files for notifications and message attachments. |
android.permission.READ_EXTERNAL_STORAGE |
Dangerous (API ≤ 32) | Legacy storage access for picking files and media on older Android versions. |
android.permission.POST_NOTIFICATIONS |
Dangerous (API 33+) | Deliver real-time push notifications for incoming customer chats, lead alerts, and task reminders. |
android.permission.VIBRATE |
Normal | Haptic feedback for reminder alerts and incoming message notifications. |
android.permission.RECEIVE_BOOT_COMPLETED |
Normal | Reschedule active reminder timers after device reboot. |
android.permission.SCHEDULE_EXACT_ALARM |
Special | Schedule high-priority task reminders and follow-up alerts at exact timestamps. |
3. Runtime Permission Workflow
Octopus Suites implements contextual, just-in-time runtime permission requests:
- Contextual Disclosure: Before triggering system permission dialogs, a brief message explains why the feature requires the permission (e.g., "To send a voice note, Octopus Suites needs microphone access").
- Graceful Degradation: If a user taps "Don't Allow", the app does not crash. The specific capability is cleanly hidden, and an unobtrusive banner explains how to enable it later in settings.
- Settings Navigation: If a user previously denied a permission with "Don't ask again", the app provides a convenient button leading directly to System Settings.
4. User Rights & Permission Revocation
Users hold absolute control over all device permissions:
- On iOS: Open Settings > Octopus Suites > toggle permissions on/off.
- On Android: Open Settings > Apps > Octopus Suites > Permissions > toggle permissions on/off.
For any inquiries or assistance regarding permissions or security, contact Kyle Solutions Private Limited engineering at dev@kylesolutions.in.