Problem description
/check and /retrieve-date are mandatory; /retrieve-age-band is optional (501 NOT_IMPLEMENTED), documented as "an alternative ... for providers that do not expose the exact SIM swap date" (#285).
But /retrieve-date's only defined way to withhold information is the null + monitoredPeriod mechanism, and that only fires for swaps older than the provider's monitored window. It has no way to express "I categorically do not disclose the exact date, only age bands."
A provider whose policy is age-band-only cannot express that through /retrieve-date's current mandatory model without either:
- returning the exact date anyway (defeats the reason it wanted
/retrieve-age-band in the first place), or
- setting
monitoredPeriod to 0 (or another degenerate value) so it always returns null — using a retention-window field to fake "not offered," since /retrieve-date has no 501 of its own.
The mandatory/optional split assumes /retrieve-age-band is a genuine alternative, but nothing in the spec lets a provider actually commit to offering only that alternative.
Possible evolution
Make /retrieve-date optional (501 NOT_IMPLEMENTED), symmetric with /retrieve-age-band, so an age-band-only provider can say so directly instead of gaming monitoredPeriod. #285 already raised this as an "alternative solution" and deferred it as a breaking, next-major change; this issue tracks that decision explicitly rather than letting it drop.
Alternative solution
Keep /retrieve-date mandatory, but document monitoredPeriod: 0 (or another explicit sentinel) as the sanctioned way to declare "exact date never disclosed," instead of leaving it an implicit hack.
Additional context
Problem description
/checkand/retrieve-dateare mandatory;/retrieve-age-bandis optional (501 NOT_IMPLEMENTED), documented as "an alternative ... for providers that do not expose the exact SIM swap date" (#285).But
/retrieve-date's only defined way to withhold information is thenull+monitoredPeriodmechanism, and that only fires for swaps older than the provider's monitored window. It has no way to express "I categorically do not disclose the exact date, only age bands."A provider whose policy is age-band-only cannot express that through
/retrieve-date's current mandatory model without either:/retrieve-age-bandin the first place), ormonitoredPeriodto0(or another degenerate value) so it always returnsnull— using a retention-window field to fake "not offered," since/retrieve-datehas no501of its own.The mandatory/optional split assumes
/retrieve-age-bandis a genuine alternative, but nothing in the spec lets a provider actually commit to offering only that alternative.Possible evolution
Make
/retrieve-dateoptional (501 NOT_IMPLEMENTED), symmetric with/retrieve-age-band, so an age-band-only provider can say so directly instead of gamingmonitoredPeriod. #285 already raised this as an "alternative solution" and deferred it as a breaking, next-major change; this issue tracks that decision explicitly rather than letting it drop.Alternative solution
Keep
/retrieve-datemandatory, but documentmonitoredPeriod: 0(or another explicit sentinel) as the sanctioned way to declare "exact date never disclosed," instead of leaving it an implicit hack.Additional context
/retrieve-age-bandoptionality wording from sim-swap description overclaims optionality for /check and /retrieve-date #285.SimSwapAgeBandschema can't express valid limits for the111sentinel (S-310/S-311 in #276) #277 (schema for this operation's sentinel value).sim-swap2.2.0(rc); making/retrieve-dateoptional is a breaking change and would require a3.0.0major bump.