Add CarrierAttestation API proposal - #331
Conversation
Filled API-proposal template for the CarrierAttestation API family, accompanying issue camaraproject#330. Proposes a horizontal profile — attested windowed disclosure — rather than a new free-standing API: a predicate answer becomes a signed, nonce-bound, expiring boolean instead of the underlying raw value. Completes the trajectory of POST /retrieve-age-band (SimSwap v2.1.0), GET /device-phone-number (NumberVerification v2.1.0) and kyc-age-verification. CarrierAttestation is filed as a new API family only for the residual no existing catalog API covers.
|
|
|
Hi @hamr0, thank you for submitting this proposal. After reviewing the filing against the CAMARA API Proposal Template, the Project Charter, and the existing sub-project portfolio, here are my main comments. 1. Project Charter alignment. The "horizontal profile" framing does not map to a valid CAMARA sub-project type — the Charter requires a concrete API family with a defined YAML interface. Additionally, use case 2 (AI agent holder presentment / trust directory) describes east-west verifiable-credential infrastructure, which the Charter explicitly excludes. It needs to be dropped or reframed with a Charter justification. 2. Direct overlap with existing sub-projects. The overlap with KYC Age Verification and SimSwap is functional, not just inspirational. KYC Age Verification already returns a boolean predicate over an operator-held subscriber fact; SimSwap v2.1.0 age-band already covers the windowed swap recency pattern. The only delta in both cases is the signing wrapper — which brings us to point 3. 3. The signing layer belongs in Commonalities/ICM. CAMARA already defines request-side binding via DPoP ( CC: @camaraproject/commonalities_codeowners @camaraproject/identity-and-consent-management_codeowners Recommended path forward:
CC: @camaraproject/api-backlog_codeowners |
|
Thank you for the review — all three points are accepted.
Two scoping questions before we file, so we file it right:
We will upload the OpenAPI sketch and the revised proposal document on issue #330 as supporting material, and would welcome a slot at the next APIBacklog WG session (10 or 24 September, whichever the chairs prefer) with a short deck covering the problem, the revised use cases, the signing choice, and the Scope Enhancement path. |
@hamr0 Feel free to open issue in https://github.com/camaraproject/Commonalities to propose signing mechanism - if it can be applied in many CAMARA APIs. Commonalites should define common guidelines in CAMARA API Design Guide. |
|
Thank you for the update, accepted on all three points. On the two questions:
Suggested next steps:
Are you agree with this @hamr0? |
|
Agreed on both points, and on all four next steps. Thank you both — the Confirming the sequence we will follow:
We will post the Commonalities issue link back here once it is open. Edited to repair three lines truncated by a paste error in the original post. No change of substance. |
|
Step 1 is done. The Scope Enhancement issue is open in Commonalities: camaraproject/Commonalities#705 — [Enhancement] Attested responses for CAMARA APIs — signed, nonce-bound, expiring answers; floor menu; range on open responses It is scoped to the response envelope only, as agreed: a JWS (RFC 7515) attestation bound to a requester nonce with an expiry, verifiable offline via per-operator JWKS; the operator-published threshold menu, where an off-menu threshold is refused and never silently rounded; and a range rather than a point value on open-value predicates. SimSwap The aggregator end-to-end encryption item is held out, as agreed, and is stated in the issue as a deliberate omission rather than left silent. It will follow as a separate companion enhancement once this baseline is discussed. Supporting material (revised proposal document and the OpenAPI sketch) will go on #330 next, linked from #705 rather than duplicated. @albertoramosmonagas @rartych — thank you both for the routing guidance. |
|
Hi @hamr0 Three points from today's Technical Steering Committee TSC discussion:
|
|
Thank you for relaying the TSC's points.
|
What type of PR is this?
API proposal
What this PR does / why we need it:
Adds the filled API-proposal template for the CarrierAttestation API family:
documentation/API proposals/APIProposal_CarrierAttestation.md.The proposal is for a horizontal profile — "attested windowed disclosure" — rather than a new free-standing API. A predicate answer becomes a signed, nonce-bound, expiring boolean instead of the underlying raw value.
CAMARA already ships the precedents this completes:
POST /retrieve-age-band(SimSwap v2.1.0) coarsens a raw timestamp into a band, because the raw value over-discloses.GET /device-phone-number(NumberVerification v2.1.0) takes no request body at all, deriving the line from the 3-legged access token.kyc-age-verificationalready ships a boolean age-threshold predicate.The ask is to finish what those three started, catalog-wide.
CarrierAttestationis filed as a new API family only for the residual no existing catalog API can be adopted into: agent-grade floor bundles and holder presentment.Which issue(s) this PR fixes:
Fixes #330
Special notes for reviewers:
Changelog input
documentation/API proposals/APIProposal_CarrierAttestation.md