Rezva

Identifier types

Types define how values are normalized, validated, registered, and resolved. Integrations should discover active types instead of hard-coding assumptions.

Initial types

  • phone — normalized telephone number
  • email — normalized email value
  • bangla_qr — full Bangla / EMV QR text (exact string match, max 700 characters)
  • paypal, bkash, or merchant IDs where enabled
  • custom — operator-controlled integration values
  • provider_name — provider namespace names such as alice.redotpay

Discovery

GET /v1/identifier-types

{
  "types": [
    {
      "name": "email",
      "status": "active",
      "registration_eligible": true,
      "resolution_eligible": true
    }
  ]
}

A QR may already be the identifier value. For Bangla / EMV payment QR codes, send the full scanned or pasted text as bangla_qr (or omit type and let the resolver detect it). Other QR formats may still need the wallet to extract a typed identifier first.

Integration rule

const supported = await fetch("/v1/identifier-types").then((r) => r.json());
const type = supported.types.find(
  (item) =>
    item.name === input.type &&
    item.status === "active" &&
    item.resolution_eligible,
);
if (!type) throw new Error("Identifier type cannot be resolved");

Keep type discovery server-driven because the set of active types and their registration eligibility can change independently of a wallet release.