-
Notifications
You must be signed in to change notification settings - Fork 30
Description
Problem description
Consumers have requested coarse time-band signals to support better fraud and risk decisioning. The current /check endpoint returns only a Boolean (swapped), which by itself is an insufficient signal.
Possible evolution
Return an Optional standardized operator-defined recency bucket.
Proposed approach:
- Keep the existing Boolean
swappedfield. - Add an optional
simSwapAgeBandEnum. - Preserve backward compatibility.
This keeps /check aligned with its purpose as a simple threshold signal while optionally exposing standardized context.
The consuming party (e.g., a bank) can then apply its own thresholds, ML features, or step-up logic outside the API contract.
Proposed request/response pattern
Request
{
"phoneNumber": "+1234567890"
}The request remains intentionally minimal and consumer-agnostic.
Response
{
"swapped": true,
"simSwapAgeBandEnum": 1,
}swappedremains the primary contract- enum fields provide optional additional signal
YAML schema note
Suggested explanatory note:
simSwapAgeBandEnumis an optional standardized recency bucket representing the elapsed time between the SIM activation/change date and the current time.
The value maps the duration into fixed bands (0–14), ranging from 0 hours up to 3+ years.
Special values:
111→ Change has not occurred999→ Subscriber valid but no real-time profile available
Standardized AgeBandEnum mapping
0 = 0h ≤ d < 4h
1 = 4h ≤ d < 12h
2 = 12h ≤ d < 1d
3 = 1d ≤ d < 2d
4 = 2d ≤ d < 5d
5 = 5d ≤ d < 7d
6 = 7d ≤ d < 14d
7 = 14d ≤ d < 30d
8 = 30d ≤ d < 60d
9 = 60d ≤ d < 90d
10 = 90d ≤ d < 180d
11 = 180d ≤ d < 1y
12 = 1y ≤ d < 2y
13 = 2y ≤ d < 3y
14 = 3y+
111 = Change has not happened
999 = Subscriber valid, but no real-time profile found
enum: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,111,999]
Backward compatibility
This proposal introduces additive-only changes:
- Existing
swappedbehavior remains unchanged - New optional response fields:
simSwapAgeBandEnum
Existing clients remain unaffected.
The goal is to keep the API focused on known business value & delivering simple operator signals, while leaving policy and decisioning to consuming systems.