Add passkey credentialId to auth credential list#448
Add passkey credentialId to auth credential list#448DhruvPareek wants to merge 1 commit intoauth-v2-session-request-id-contractfrom
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
✱ Stainless preview buildsThis PR will update the kotlin openapi python typescript Edit this comment to update them. They will appear in their respective SDK's changelogs. ✅ grid-python studio · code · diff
✅ grid-kotlin studio · code · diff
|
| 💡 Schema/RequiredPropertyNotDefined: This schema marks `type` as `required`, but it isn't defined in `properties`, so it will be ignored. |
| 💡 Schema/RequiredPropertyNotDefined: This schema marks `type` as `required`, but it isn't defined in `properties`, so it will be ignored. |
| 💡 Schema/ObjectHasNoProperties: Type information is missing for schema |
| 💡 Schema/RequiredPropertyNotDefined: This schema marks `type` as `required`, but it isn't defined in `properties`, so it will be ignored. |
| 💡 Schema/RequiredPropertyNotDefined: This schema marks `type` as `required`, but it isn't defined in `properties`, so it will be ignored. |
| 💡 Schema/RequiredPropertyNotDefined: This schema marks `type` as `required`, but it isn't defined in `properties`, so it will be ignored. |
✅ grid-openapi studio · code · diff
Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ✅New diagnostics (8 note)
💡 Schema/RequiredPropertyNotDefined: This schema marks `type` as `required`, but it isn't defined in `properties`, so it will be ignored. 💡 Schema/RequiredPropertyNotDefined: This schema marks `type` as `required`, but it isn't defined in `properties`, so it will be ignored. 💡 Schema/ObjectHasNoProperties: Type information is missing for schema 💡 Schema/RequiredPropertyNotDefined: This schema marks `type` as `required`, but it isn't defined in `properties`, so it will be ignored. 💡 Schema/RequiredPropertyNotDefined: This schema marks `type` as `required`, but it isn't defined in `properties`, so it will be ignored. 💡 Schema/RequiredPropertyNotDefined: This schema marks `type` as `required`, but it isn't defined in `properties`, so it will be ignored. 💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member. 💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-05-07 23:48:01 UTC
Greptile SummaryThis PR extends the
Confidence Score: 5/5Safe to merge — the changes are additive and well-scoped to the GET /auth/credentials list response without touching any other endpoint schemas. The discriminated union is correctly constructed: unevaluatedProperties: false on AuthMethodResponse prevents PASSKEY objects from matching that branch, and the required credentialId on PasskeyAuthMethod prevents EMAIL_OTP/OAUTH objects from matching the PASSKEY branch. The bundled files are in sync with the source. No existing endpoint contracts are broken. No files require special attention.
|
| Filename | Overview |
|---|---|
| openapi/components/schemas/auth/AuthCredentialListItem.yaml | New discriminated union routing EMAIL_OTP/OAUTH to AuthMethodResponse and PASSKEY to PasskeyAuthMethod; discriminator mapping is complete and correct |
| openapi/components/schemas/auth/PasskeyAuthMethod.yaml | New schema extending AuthMethod with required credentialId; correctly uses allOf and restricts type to PASSKEY for discriminator routing |
| openapi/components/schemas/auth/AuthCredentialListResponse.yaml | Single-line change swapping the list item ref from AuthMethod to AuthCredentialListItem, correctly delegating to the new discriminated union |
| openapi/paths/auth/auth_credentials.yaml | GET /auth/credentials example updated to show all three credential types (EMAIL_OTP, OAUTH, PASSKEY) with credentialId present only on the PASSKEY entry |
| openapi.yaml | Bundled file regenerated consistently with source changes; AuthMethodResponse relocated earlier, PasskeyAuthMethod and AuthCredentialListItem added in correct position |
| mintlify/openapi.yaml | Mintlify bundled file mirrors openapi.yaml changes; doc-site schema and example are updated in sync |
Sequence Diagram
sequenceDiagram
participant Client
participant API as Grid API
Client->>API: POST /auth/credentials (type: PASSKEY, attestation)
API-->>Client: 201 AuthMethodResponse (id, type, nickname — no credentialId)
Client->>API: "GET /auth/credentials?accountId=..."
API-->>Client: 200 AuthCredentialListResponse
note over Client,API: data[] = AuthCredentialListItem (oneOf)
note over Client,API: EMAIL_OTP/OAUTH → AuthMethodResponse
note over Client,API: PASSKEY → PasskeyAuthMethod (+ credentialId)
Client->>Client: "navigator.credentials.get({allowCredentials: [{id: credentialId}]})"
Reviews (2): Last reviewed commit: "Add passkey credentialId to auth credent..." | Re-trigger Greptile
9190274 to
04167e9
Compare
014a693 to
a60c666
Compare
04167e9 to
01c31c0
Compare
a60c666 to
f25ca4f
Compare
01c31c0 to
7833483
Compare

Summary:
https://docs.google.com/document/d/18f3pLcXbLein9McsXxiPzVJMmXhBFGWQ-6Gys5WILLk/edit?tab=t.zg1lhkeq1hek
Test: