{
    "name": "WalletPro",
    "category": "Finance",
    "platform": "Garmin Connect IQ",
    "version": "1.1.3",
    "garminConnectIqUrl": "https://apps.garmin.com/apps/485f43d6-5600-478c-9956-08994fca384d",
    "shortDescription": "Offline Garmin wallet for QR codes, barcodes, loyalty and discount cards, short Notes, and 2FA codes.",
    "primaryKeywords": [
        "Garmin wallet",
        "Garmin QR wallet",
        "Garmin barcode wallet",
        "offline QR and barcode cards",
        "loyalty and discount cards",
        "membership and gym cards",
        "access cards and tickets",
        "parkrun barcode",
        "Garmin 2FA authenticator",
        "Garmin TOTP codes",
        "Notes for locker numbers and door codes",
        "Garmin Connect IQ card settings"
    ],
    "useCases": [
        "loyalty, membership, and discount cards",
        "gym and access cards",
        "tickets and boarding passes with static code data",
        "parkrun barcodes",
        "QR and barcode cards",
        "Notes for locker numbers and door codes",
        "TOTP/OTP 2FA codes",
        "offline access after Garmin Connect IQ settings sync"
    ],
    "localization": {
        "languageHub": "/locale/",
        "languageIndexFile": "/locale/index.json",
        "localizedDescriptionsFile": "/localized-descriptions.json",
        "localizedGuideSource": "/guide-localizations.json",
        "localizedGuideAnchor": "#guide",
        "websiteLocales": [
            "id-ID",
            "ms-MY",
            "cs-CZ",
            "da-DK",
            "de-DE",
            "en-US",
            "es-ES",
            "fr-FR",
            "hr-HR",
            "it-IT",
            "hu-HU",
            "nl-NL",
            "no-NO",
            "pl-PL",
            "pt-BR",
            "pt-PT",
            "sk-SK",
            "sl-SI",
            "fi-FI",
            "sv-SE",
            "el-GR",
            "ru-RU",
            "he-IL",
            "th-TH",
            "ko-KR",
            "ja-JP",
            "zh-CN",
            "zh-TW"
        ]
    },
    "configuration": {
        "method": "Garmin Connect IQ app settings or WalletPro's on-watch card manager/editor from the watch action menu",
        "watchActionMenu": "Open WalletPro on the watch, hold UP/MENU or long-touch the wallet list, then choose Add or Edit.",
        "qrSlashActionOnWatch": "In the QR editor, Add / appends one slash. If the action is not shown, paste the complete address in Garmin Connect IQ app settings and sync.",
        "multiLineNoteEntryOnWatch": "In the Note editor, Add line appends one line. If the action is not shown, existing multi-line Notes remain readable; Garmin Connect IQ app settings replace the whole Note and do not create extra lines.",
        "payloadActionBoundary": "The two extra editor actions are unavailable on the thirteen products without Garmin's app text-entry screen, five additional legacy products where they would exceed the safe memory limit, and five constrained products listed below.",
        "payloadActionUnavailableProducts": [
            "D2 Air",
            "Forerunner 55",
            "Fenix 5",
            "Fenix 5S",
            "Fenix Chronos",
            "Forerunner 645",
            "Forerunner 935",
            "Captain Marvel",
            "First Avenger",
            "Darth Vader",
            "Rey",
            "Venu",
            "Venu Mercedes-Benz Collection",
            "Vivoactive 3",
            "Vivoactive 3 Music",
            "Vivoactive 3 Music LTE",
            "Vivoactive 4",
            "Vivoactive 4S",
            "Descent G1",
            "Instinct 2",
            "Instinct 2S",
            "Instinct 2X",
            "Instinct Crossover"
        ]
    },
    "runtime": {
        "offlineAfterSettingsSync": true,
        "networkPermissions": false,
        "communicationsPermissions": false,
        "webRequests": false,
        "developerServers": false,
        "qrGeneratedOnDevice": true,
        "discountCardsGeneratedOnDevice": true,
        "totpGeneratedOnDevice": true,
        "totpInputs": [
            "Base32 secret",
            "complete otpauth://totp setup link with an account label",
            "complete otpauth://totp setup link without an account label"
        ],
        "totpAlgorithmsStandardGraph": ["SHA1", "SHA256"],
        "totpAlgorithmsConstrainedAndLegacyGraphs": ["SHA1"],
        "totpSha1OnlyProducts": [
            "Descent G1",
            "Instinct 2",
            "Instinct 2S",
            "Instinct 2X",
            "Instinct Crossover",
            "Enduro",
            "Fenix 5",
            "Fenix 5S",
            "Fenix 6",
            "Fenix 6S",
            "Fenix Chronos",
            "Forerunner 245",
            "Forerunner 55",
            "Forerunner 645",
            "Forerunner 935",
            "Vivoactive 3",
            "Vivoactive 3 Music",
            "Vivoactive 3 Music LTE"
        ],
        "totpDigits": [6, 7, 8],
        "totpPeriodSeconds": {
            "min": 15,
            "max": 120,
            "default": 30
        }
    },
    "wifiQr": {
        "payloadExample": "WIFI:T:WPA;S:Network;P:Password;;",
        "requiresCompletePayload": true,
        "capacityDependsOnDisplay": true,
        "rejectsUnsafeValues": true,
        "escapedCharacters": ["\\", ";", ",", "\"", ":"],
        "guidance": "Save the complete standard Wi-Fi QR payload rather than only the password. Do not truncate a value that the watch reports as QR too long."
    },
    "retailerCompatibility": {
        "savedData": "static",
        "signsInToRetailerAccounts": false,
        "retrievesRetailerCodes": false,
        "refreshesDynamicQrOrBarcodeTokens": false,
        "guidance": "If a retailer changes its official QR code, barcode, or token when its app opens or after some time, use the retailer's app. A saved static copy can stop working."
    },
    "barcodeFormats": {
        "existing": ["Code 128"],
        "addedInVersion": "1.1.2",
        "added": ["Aztec", "EAN-13", "Code 39", "UPC-A"],
        "commonUses": ["loyalty cards", "membership cards", "product identifiers", "club cards", "North-American retail cards"],
        "note": "Choose the format required by the original card or scanner; WalletPro does not guarantee every venue scanner accepts every code."
    },
    "permissions": {
        "watchApp": [],
        "betaWatchApp": [],
        "purpose": "WalletPro requests no permissions."
    },
    "privacy": {
        "developerReceivesCardData": false,
        "storesOnDeveloperServer": false,
        "storage": "Garmin Connect IQ app settings and device app storage after sync"
    },
    "notA": ["payment wallet", "bank card wallet", "NFC payment app", "Garmin Pay replacement"],
    "pages": {
        "home": "/",
        "app": "/wallet/",
        "blog": "/blog/",
        "blogArticles": [
            "/blog/edit-wallet-cards/",
            "/blog/add-loyalty-membership-cards-to-garmin/",
            "/blog/garmin-qr-barcode-not-scanning/",
            "/blog/boarding-pass-ticket-on-garmin/"
        ],
        "changelog": "/changelog/",
        "changelogVersions": [
            "/changelog/1.1.3/",
            "/changelog/1.1.2/",
            "/changelog/1.1.1/",
            "/changelog/1.1.0/",
            "/changelog/1.0.9/",
            "/changelog/1.0.8/",
            "/changelog/1.0.7/",
            "/changelog/1.0.6/",
            "/changelog/1.0.5/",
            "/changelog/1.0.4/",
            "/changelog/1.0.3/",
            "/changelog/1.0.2/",
            "/changelog/1.0.1/",
            "/changelog/1.0.0/"
        ],
        "languages": "/locale/",
        "guides": "/locale/{locale}/#guide",
        "languageIndex": "/locale/index.json",
        "garminConnectIq": "https://apps.garmin.com/apps/485f43d6-5600-478c-9956-08994fca384d",
        "privacy": "/privacy",
        "terms": "/terms",
        "support": "/support"
    }
}
