{
  "report_version": "1.0",
  "organization": {
    "name": "Saropa Pty Ltd",
    "country": "AU",
    "url": "https://saropa.com"
  },
  "period": {
    "start": "2024-07-01",
    "end": "2024-09-30",
    "days": 92,
    "notes": "Complete quarter. Pre-launch beta users existed before the 2024-01-19 public launch; their data handling was identical to post-launch policy but the reporting window deliberately does not pre-date the launch."
  },
  "published_at": "2026-04-19",
  "canonical_url": "https://saropa.com/transparency/2024-q3.html",
  "alternates": {
    "markdown": "https://saropa.com/transparency/2024-q3.md",
    "json": "https://saropa.com/transparency/2024-q3.json"
  },
  "disclosure_scope": {
    "statement": "As of 2024-09-30, this report covers everything Saropa Pty Ltd is legally permitted to disclose. If a future report is constrained by legal process we cannot acknowledge (e.g. gag-order provisions attached to a government request), we will say so to the extent the law permits.",
    "signed_date": "2026-04-19",
    "constraints_present": false,
    "constraints_description": null,
    "note_on_warrant_canary": "We deliberately do not publish a classic warrant canary. The compelled-speech legal theory that canaries rely on has never been tested in court and is materially weaker in Australia, where Saropa Pty Ltd is registered."
  },
  "days_since_last_incident": {
    "value": 255,
    "anchor_date": "2024-01-19",
    "anchor_reason": "public_launch",
    "as_of": "2024-09-30"
  },
  "government_requests": {
    "count": 0,
    "description": "No requests for user data were received from any government or law enforcement agency during this period.",
    "items": []
  },
  "data_breaches": {
    "count": 0,
    "description": "No incidents of unauthorized access, loss, or exposure of user data were identified during this period.",
    "items": []
  },
  "takedown_requests": {
    "count": 0,
    "description": "No DMCA, court-order, or terms-violation takedown requests against user accounts or shared content were received during this period.",
    "items": []
  },
  "analytics": {
    "status": "not_published_by_policy",
    "note": "Saropa does not publish aggregate user counts (installs, events, crashes, opt-in rate) in transparency reports. This is a deliberate, permanent product decision — not a pending extraction. The numeric fields below are retained as `null` in every quarter forever, for schema stability only.",
    "active_installs_at_quarter_end": null,
    "crash_reports_received": null,
    "analytics_events_received": null,
    "percent_opted_in": null
  },
  "sdks": [
    {
      "name": "firebase_core",
      "version": "3.6.0",
      "purpose": "Firebase app bootstrap",
      "data": "App install ID (app_instance_id); Basic device info",
      "trigger": "App start, if analytics infrastructure is enabled and the user is not COPPA-age",
      "opt_out": "Offline Mode kill switch (from Q2 2026)"
    },
    {
      "name": "firebase_analytics",
      "version": "11.3.3",
      "purpose": "Screen + feature usage tracking",
      "data": "Event name; Parameters; Device model; Pseudonymous install ID",
      "trigger": "User explicitly opts in via AnalyticsIntegrationEnabled (opt-in default from Q2 2026)",
      "opt_out": "Analytics toggle; Offline Mode (from Q2 2026)"
    },
    {
      "name": "firebase_crashlytics",
      "version": "4.1.3",
      "purpose": "Crash reports",
      "data": "Error message; Stack trace; Device model; OS version; Pseudonymous install ID",
      "trigger": "Captured on every install; uploaded when analytics opt-in AND online (from Q2 2026, previously uploaded whenever present)",
      "opt_out": "Analytics opt-out (blocks upload from Q2 2026); Offline Mode"
    },
    {
      "name": "firebase_app_check",
      "version": "0.3.1+3",
      "purpose": "Anti-abuse attestation for Firebase requests",
      "data": "Device attestation token (no user data)",
      "trigger": "Automatic when the app makes Firebase API calls",
      "opt_out": "Not user-facing — tied to Firebase SDK presence"
    },
    {
      "name": "supabase_flutter",
      "version": "2.6.0",
      "purpose": "Account, Saropa Connections, stats upload, Connection Discovery, E2EE contact sharing",
      "data": "Account email + display_name (when signed in); Contact stats as aggregate counts (opt-in); Contacts' display_name + email addresses via Connection Discovery (opt-in only); E2EE ciphertext for shared contact cards (servers cannot decrypt)",
      "trigger": "User signs in; individual cloud-feature toggles",
      "opt_out": "Sign out; Per-category toggles (Trust Dashboard from Q2 2026); Offline Mode"
    },
    {
      "name": "google_sign_in",
      "version": "6.2.1",
      "purpose": "Google account sign-in",
      "data": "Google OAuth token; Profile email",
      "trigger": "User chooses 'Sign in with Google'",
      "opt_out": "Do not sign in; Disconnect via Settings"
    },
    {
      "name": "sign_in_with_apple",
      "version": "6.1.2",
      "purpose": "Apple account sign-in (iOS)",
      "data": "Apple OAuth token; Hashed email or user-provided alias",
      "trigger": "User chooses 'Sign in with Apple'",
      "opt_out": "Do not sign in; Manage via Apple ID settings"
    },
    {
      "name": "local_auth",
      "version": "2.2.0",
      "purpose": "Biometric unlock for per-contact lock",
      "data": "Nothing — verification is handled by the OS; Saropa only receives a success/fail signal",
      "trigger": "User enables biometric lock on a contact",
      "opt_out": "Disable biometric lock in the app; OS biometric settings"
    },
    {
      "name": "permission_handler",
      "version": "11.3.1",
      "purpose": "OS permission prompts",
      "data": "Nothing — it mediates permission requests, does not collect data",
      "trigger": "App requests a permission",
      "opt_out": "Deny permission in the system dialog; Revoke in system settings"
    },
    {
      "name": "flutter_contacts",
      "version": "1.1.8+1",
      "purpose": "Device contacts access",
      "data": "Contacts the user explicitly selects for import are read from the device address book; Never uploaded from this package",
      "trigger": "User grants contacts permission and chooses to import",
      "opt_out": "Revoke contacts permission in system settings"
    },
    {
      "name": "geolocator",
      "version": "13.0.1",
      "purpose": "Device location (for real-time map features only)",
      "data": "Coordinates passed to the requesting map feature in real time",
      "trigger": "User interacts with a feature that needs location (and has granted the permission)",
      "opt_out": "Deny location permission; Revoke in system settings"
    },
    {
      "name": "google_maps_flutter",
      "version": "2.9.0",
      "purpose": "Embedded map rendering",
      "data": "The tile requests Google Maps makes to its own servers include the user's approximate viewport; No Saropa account data is shared",
      "trigger": "User opens a map view",
      "opt_out": "Avoid map views; Offline Mode (from Q2 2026) suppresses live tile loading"
    },
    {
      "name": "image_picker",
      "version": "1.1.2",
      "purpose": "Photo / image selection",
      "data": "Images the user explicitly picks are loaded into the app; Never uploaded by this package itself",
      "trigger": "User taps a 'choose photo' control",
      "opt_out": "Deny photo library permission in system settings"
    },
    {
      "name": "app_links",
      "version": "6.2.0",
      "purpose": "Deep-link / URL-scheme handling",
      "data": "Inbound URL from the OS when a link with the app's scheme is opened",
      "trigger": "User taps a saropa:// or https://saropa.com/... link",
      "opt_out": "Not applicable — only runs when a link is explicitly opened"
    }
  ],
  "changes_since_last_report": [
    "Facebook Sign-In was removed (flutter_facebook_auth package pulled). Existing Saropa accounts linked to Facebook continued to work, but new sign-ins via Facebook were no longer offered. Users can sign in with Google or Apple, or create a Saropa account directly.",
    "No other data-handling SDK additions or removals this quarter."
  ],
  "contact": "transparency@saropa.com",
  "contact_sla": {
    "acknowledge_within_hours": 72,
    "substantive_reply_within_days": 14,
    "corrections_policy": "Corrections appear in the next quarter's report and as a new line in hashes.txt. Published reports are never edited in place."
  },
  "license": "CC0-1.0",
  "license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
  "sha256": "226dd6e289b6f3e2b0fc9f6b310a51a57188eed7f0d19984d3e220a6db4deed4",
  "sha256_computation_note": "Hash of this file with 'sha256' set to null. Once computed, insert the hex digest here and append a line to hashes.txt. Pending formal release."
}
