Skip to content

New pricing sources can be introduced by the backend without adding provider allowlists or freshness rules to the app. The versioned contract covers search grids, card/sealed details, scan quotes and collection valuation. The app accepts backend-approved prices and newer withdrawals while preserving holdings, costs, personal values and exact catalogue identities.

Integration contract for provider work ​

Use stable Snag cards.id and sealed_products.id with the exact market axes. Resolve external provider IDs inside the backend price service. M1/M2/M3 identify raw, sealed and graded markets, not third-party providers. Do not change catalogue IDs or infer a replacement price from a similarly numbered card or image path.

The API supplies presentation v1: value or null, currency, evaluation timestamp, validity deadline, source label, display summary, status and refresh recommendation. Backend policy controls these fields. Batch requests describe grid/detail usage; the backend decides which providers and refresh budget apply. Compatibility with installed apps is preserved through additive fields and legacy request support.

Release status and limits ​

Prepared in PRs targeting staging; not merged or deployed by this task. Deploy the additive API first and publish one updated mobile build. Later pricing changes within v1 need only backend work. This does not create the missing One Piece or sealed quotes: provider mappings and coverage remain separate work.

No database migration, production write, account/collection mutation or emulator restart. Caches refresh on subsequent reads after one minute; no live push is claimed. Native features or breaking API changes still need a mobile release. The broader backend-authority rules are tracked separately in mobile #997, backend #636, admin #113, agent-workflows #1 and documentation #367.

Verification ​

Mobile lint and typecheck pass; 3,355 Jest tests pass (11 skipped). The focused valuation suites pass 68 tests. Backend API: 1,657 pass, 42 skipped. Ingest: 569 pass. Backend E2E: 86 pass, 15 fail, 11 skipped; unmodified staging bf84cce produces the same counts and identical failing test names (existing auth-related 401/403 expectations). No assertions were weakened. Documentation build passes. API JavaScript-layer typecheck passes. Ingest JavaScript-layer typecheck has seven existing errors in backfillMediaKeys.test.ts and setLogos.test.ts, reproduced identically on the unmodified base; these also block GitHub CI. Maestro was not run because no emulator was started on the personal VPS.