Files
codex/codex-rs/app-server-protocol/schema/json/v2/LoginAccountResponse.json
T
Celia Chen b45fef0774 feat: add managed Bedrock login API (#31327)
## Why

App-server clients can report whether Amazon Bedrock is using
AWS-managed credentials or a Codex-managed API key, but they do not have
a matching API for creating the managed login. This PR defines that
experimental wire contract independently from its implementation.

Managed Bedrock API keys are already a primary `CodexAuth` mode. The API
therefore describes a normal Codex login that replaces the current
stored auth rather than introducing provider-scoped credential storage.

## What changed

- Add the experimental `amazonBedrock` variant to `account/login/start`.
- Accept an API key and AWS region and return a matching discriminated
response.
- Gate the request behind the app-server `experimentalApi` capability.
- Regenerate the JSON and TypeScript protocol schemas.
- Document the login contract, notifications, primary-auth replacement
semantics, restart boundary, and non-transactional durable writes.

## Impact

This PR defines the API shape but does not implement login behavior. The
next PR adds validation, persistence through the existing Codex auth
lifecycle, provider selection, and notifications.

## Validation

- `just test -p codex-app-server-protocol`

## Stack

1. **#31327 Managed Bedrock experimental API** — base: `main`
2. #31326 Managed Bedrock login — base: `codex/managed-bedrock-api`
3. #31325 Managed Bedrock logout — base:
`codex/managed-bedrock-login-v2`
2026-07-09 17:05:37 -07:00

109 lines
2.5 KiB
JSON
Generated

{
"$schema": "http://json-schema.org/draft-07/schema#",
"oneOf": [
{
"properties": {
"type": {
"enum": [
"apiKey"
],
"title": "ApiKeyv2::LoginAccountResponseType",
"type": "string"
}
},
"required": [
"type"
],
"title": "ApiKeyv2::LoginAccountResponse",
"type": "object"
},
{
"properties": {
"authUrl": {
"description": "URL the client should open in a browser to initiate the OAuth flow.",
"type": "string"
},
"loginId": {
"type": "string"
},
"type": {
"enum": [
"chatgpt"
],
"title": "Chatgptv2::LoginAccountResponseType",
"type": "string"
}
},
"required": [
"authUrl",
"loginId",
"type"
],
"title": "Chatgptv2::LoginAccountResponse",
"type": "object"
},
{
"properties": {
"loginId": {
"type": "string"
},
"type": {
"enum": [
"chatgptDeviceCode"
],
"title": "ChatgptDeviceCodev2::LoginAccountResponseType",
"type": "string"
},
"userCode": {
"description": "One-time code the user must enter after signing in.",
"type": "string"
},
"verificationUrl": {
"description": "URL the client should open in a browser to complete device code authorization.",
"type": "string"
}
},
"required": [
"loginId",
"type",
"userCode",
"verificationUrl"
],
"title": "ChatgptDeviceCodev2::LoginAccountResponse",
"type": "object"
},
{
"properties": {
"type": {
"enum": [
"chatgptAuthTokens"
],
"title": "ChatgptAuthTokensv2::LoginAccountResponseType",
"type": "string"
}
},
"required": [
"type"
],
"title": "ChatgptAuthTokensv2::LoginAccountResponse",
"type": "object"
},
{
"properties": {
"type": {
"enum": [
"amazonBedrock"
],
"title": "AmazonBedrockv2::LoginAccountResponseType",
"type": "string"
}
},
"required": [
"type"
],
"title": "AmazonBedrockv2::LoginAccountResponse",
"type": "object"
}
],
"title": "LoginAccountResponse"
}