Skip to content

Optional standardized operator-defined recency bucket to be returned with swapped boolean(SimSwap) #253

@KeldaAnders

Description

@KeldaAnders

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 swapped field.
  • 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,
}
  • swapped remains the primary contract
  • enum fields provide optional additional signal

YAML schema note

Suggested explanatory note:

simSwapAgeBandEnum is 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 occurred
  • 999 → 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 swapped behavior 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions