Support self-serve Business ProLite accounts (#35785)

## What changed

- Recognize `self_serve_business_prolite` across authentication, account and rate-limit APIs, generated schemas, workspace classification, status display, cloud configuration gating, and usage-limit messaging.
- Keep the Python SDK's `PlanType` enum compatible with non-empty string values introduced by newer Codex runtimes while preserving its known constants.

## Testing

- Cover token parsing, account reads and notifications, backend rate-limit mapping, workspace behavior, error formatting, and Python SDK response coercion for the new plan value.

GitOrigin-RevId: 70bc17a7c4ba4028cb10e4333cc1f2ac64da361f
This commit is contained in:
Arun Eswara authored and copyberry committed 2026-07-28 15:50:45 +00:00
1 parent bb1af235ea
commit cf7e9cfe6a
25 files changed
+258 -29

No files matched your search

+21
View File
@@ -122,6 +122,27 @@ fn id_token_info_parses_usage_based_business_plans() {
assert_eq!(enterprise_cbp.is_workspace_account(), true);
}
#[test]
fn id_token_info_parses_self_serve_business_prolite_plan() {
let jwt = fake_jwt(serde_json::json!({
"email": "user@example.com",
"https://api.openai.com/auth": {
"chatgpt_plan_type": "self_serve_business_prolite"
}
}));
let info = parse_chatgpt_jwt_claims(&jwt).expect("should parse");
assert_eq!(
info.get_chatgpt_plan_type().as_deref(),
Some("Self Serve Business ProLite")
);
assert_eq!(
info.get_chatgpt_plan_type_raw().as_deref(),
Some("self_serve_business_prolite")
);
assert_eq!(info.is_workspace_account(), true);
}
#[test]
fn id_token_info_handles_missing_fields() {
let fake_jwt = fake_jwt(serde_json::json!({ "sub": "123" }));