docs: publish AgentID owner permission contract - #195
Draft
shalim786 wants to merge 1 commit into
Draft
Conversation
📋 View the side-by-side API change reviewThe link expires in 7 days. 🔒 Your API specs are encrypted in CI before they're uploaded. The decryption key stays in this link's URL fragment (after the #), which browsers never send to a server, so oasdiff cannot read your specs. How it works → Posted automatically by the oasdiff GitHub Action. To turn this off (no spec upload, no comment), set |
✨ API Changes# API Changelog n/a vs. n/a
## API Changes
### GET /v0/api-keys
- added the optional property `api_keys/items/permissions/owner_email` to the response with the `200` status
- added the optional property `api_keys/items/permissions/owner_profile` to the response with the `200` status
### POST /v0/api-keys
- added the new optional request property `permissions/owner_email`
- added the new optional request property `permissions/owner_profile`
- added the optional property `permissions/owner_email` to the response with the `200` status
- added the optional property `permissions/owner_profile` to the response with the `200` status
### GET /v0/api-keys/public-keys
- added the required property `public_keys/items/permissions` to the response with the `200` status
### POST /v0/api-keys/public-keys
- added the new optional request property `permissions`
- added the required property `permissions` to the response with the `200` status
### PATCH /v0/api-keys/public-keys/{api_key_id}
- added the new optional request property `permissions`
- the request property `name` became nullable
- the request property `name` became optional
- added the required property `permissions` to the response with the `200` status
### GET /v0/inboxes/{inbox_id}/api-keys
- added the optional property `api_keys/items/permissions/owner_email` to the response with the `200` status
- added the optional property `api_keys/items/permissions/owner_profile` to the response with the `200` status
### POST /v0/inboxes/{inbox_id}/api-keys
- added the new optional request property `permissions/owner_email`
- added the new optional request property `permissions/owner_profile`
- added the optional property `permissions/owner_email` to the response with the `200` status
- added the optional property `permissions/owner_profile` to the response with the `200` status
### GET /v0/pods/{pod_id}/api-keys
- added the optional property `api_keys/items/permissions/owner_email` to the response with the `200` status
- added the optional property `api_keys/items/permissions/owner_profile` to the response with the `200` status
### POST /v0/pods/{pod_id}/api-keys
- added the new optional request property `permissions/owner_email`
- added the new optional request property `permissions/owner_profile`
- added the optional property `permissions/owner_email` to the response with the `200` status
- added the optional property `permissions/owner_profile` to the response with the `200` status💡 Download |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to agentmail-to/agentmail-api#715 and the GA gate in
plans/AGENTID_OWNER_EMAIL.md.owner_profileandowner_emailpermissions on AgentID public-key credentialsWhy
The merged API now accepts owner permissions when public-key credentials are created or updated and always returns both permission booleans. The published Fern contract still described permissions as server-owned and immutable, so generated clients could not exercise the deployed API safely.
SDK compatibility
The TypeScript SDK has already shipped the generated
updatePublicKeyNamemethod. This PR intentionally keeps the Fern endpoint key and generated method name stable while expanding its request to update the name, owner permissions, or both. That avoids deleting an already-released method.Developer impact
Generated Python and TypeScript clients can independently allow or block
owner_profileandowner_emailat credential creation and through the existing update method. Public-key responses expose both booleans explicitly, and bearer-key permission models expose the delegation ceiling used by public-key creation and update.Root cause
The original public-key docs contract landed before the owner-scope permission storage and management paths in API PR 2a. PR 3 activated those scopes, leaving the Fern schema one delivery step behind the runtime contract.
Validation
tsc --noEmit --typeRoots /Users/shabs/Dev/agentmail/agentmail-docs/node_modules/@typesfern/**/*.ymlfiles load successfully with Ruby Psychgit diff --checkagentmail-node0.5.18 confirmsupdatePublicKeyNameis already public and remains stable