{
  "schema_version": "1.0.0",
  "product_id": "aperture-wallet-ios",
  "purpose": "Public, non-secret navigation contract for Aperture App Intents, universal-link fallbacks, support agents, and automation. These entry points only open visible app screens.",
  "source_build": {
    "version": "2.40.12",
    "build": "41",
    "status": "source-ready; App Store release pending"
  },
  "public_association_policy": {
    "active_paths": [
      "/app/create-wallet/entropy"
    ],
    "pending_paths": [
      "/app/search",
      "/app/receive",
      "/app/tools/currency-converter",
      "/app/settings/security",
      "/app/settings/wallets"
    ],
    "activation_rule": "Move a pending path into the live apple-app-site-association file only after the matching Aperture build is publicly available in the App Store. Until then, the canonical HTTPS URL remains a readable web fallback."
  },
  "entry_points": [
    {
      "id": "universal-search",
      "name": "Search Your Wallet",
      "path": "/app/search",
      "url": "https://aperturex.io/app/search",
      "app_intent": "ApertureSearchWalletIntent",
      "app_destination": "universalSearch",
      "availability": "source-ready; public association pending Aperture 2.40.12 release",
      "requires_existing_wallet": true,
      "opens_visible_ui": true,
      "safe_effect": "Opens the existing on-device wallet search interface after the normal app lock is satisfied."
    },
    {
      "id": "receive-crypto",
      "name": "Receive Crypto",
      "path": "/app/receive",
      "url": "https://aperturex.io/app/receive",
      "app_intent": "ApertureReceiveCryptoIntent",
      "app_destination": "receive",
      "availability": "source-ready; public association pending Aperture 2.40.12 release",
      "requires_existing_wallet": true,
      "opens_visible_ui": true,
      "safe_effect": "Opens asset selection for the existing Receive flow; it does not create or broadcast a transaction."
    },
    {
      "id": "currency-converter",
      "name": "Currency Converter",
      "path": "/app/tools/currency-converter",
      "url": "https://aperturex.io/app/tools/currency-converter",
      "app_intent": "ApertureCurrencyConverterIntent",
      "app_destination": "currencyConverter",
      "availability": "source-ready; public association pending Aperture 2.40.12 release",
      "requires_existing_wallet": true,
      "opens_visible_ui": true,
      "safe_effect": "Opens Aperture's informational crypto, fiat, and precious-metals converter."
    },
    {
      "id": "security-settings",
      "name": "Security Settings",
      "path": "/app/settings/security",
      "url": "https://aperturex.io/app/settings/security",
      "app_intent": "ApertureSecuritySettingsIntent",
      "app_destination": "securitySettings",
      "availability": "source-ready; public association pending Aperture 2.40.12 release",
      "requires_existing_wallet": true,
      "opens_visible_ui": true,
      "safe_effect": "Opens security settings after the existing app lock; it never changes a passcode, Face ID, or auto-lock setting automatically."
    },
    {
      "id": "wallet-management",
      "name": "Wallet Management",
      "path": "/app/settings/wallets",
      "url": "https://aperturex.io/app/settings/wallets",
      "app_intent": "ApertureWalletManagementIntent",
      "app_destination": "walletManagement",
      "availability": "source-ready; public association pending Aperture 2.40.12 release",
      "requires_existing_wallet": true,
      "opens_visible_ui": true,
      "safe_effect": "Opens wallet management after the existing app lock; it never imports, exports, adds, or removes a wallet automatically."
    },
    {
      "id": "physical-entropy-wallet",
      "name": "Build a Wallet with Physical Randomness",
      "path": "/app/create-wallet/entropy",
      "url": "https://aperturex.io/app/create-wallet/entropy",
      "app_intent": "AperturePhysicalEntropyWalletIntent",
      "app_destination": "importWallet",
      "availability": "public association active",
      "requires_existing_wallet": false,
      "opens_visible_ui": true,
      "safe_effect": "Opens the physical-randomness wallet-creation entry point; all secret generation and review remain visible and on-device."
    }
  ],
  "security_boundary": {
    "authentication": "Every entry point preserves Aperture's existing passcode, Face ID, privacy shield, scene-activity, and blocking-presentation gates.",
    "never_automated": [
      "read wallet data",
      "request or expose a recovery phrase, private key, BIP-39 passphrase, app passcode, or backup secret",
      "choose a recipient or amount",
      "sign, authorize, broadcast, or reverse a transaction",
      "import, export, create, or remove a wallet without explicit in-app user actions"
    ]
  },
  "last_reviewed": "2026-08-31"
}
