Normalize canonical API formats

This commit is contained in:
fawney19
2026-04-29 10:20:41 +08:00
parent 02ad67fe33
commit 07a319259b
171 changed files with 2460 additions and 1962 deletions
@@ -446,7 +446,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-gemini-local-1".to_string(),
endpoint_api_format: "gemini:chat".to_string(),
endpoint_api_format: "gemini:generate_content".to_string(),
endpoint_api_family: Some("gemini".to_string()),
endpoint_kind: Some("chat".to_string()),
endpoint_is_active: true,
@@ -454,11 +454,11 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
key_name: "prod".to_string(),
key_auth_type: "api_key".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["gemini:chat".to_string()]),
key_api_formats: Some(vec!["gemini:generate_content".to_string()]),
key_allowed_models: None,
key_capabilities: None,
key_internal_priority: 5,
key_global_priority_by_format: Some(serde_json::json!({"gemini:chat": 1})),
key_global_priority_by_format: Some(serde_json::json!({"gemini:generate_content": 1})),
model_id: "model-openai-chat-gemini-local-1".to_string(),
global_model_id: "global-model-openai-chat-gemini-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -468,7 +468,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "gemini-2.5-pro-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["gemini:chat".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -488,7 +488,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
row.model_provider_model_mappings = Some(vec![StoredProviderModelMapping {
name: "gemini-2.5-flash-upstream".to_string(),
priority: 2,
api_formats: Some(vec!["gemini:chat".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]);
row
}
@@ -539,7 +539,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-gemini-local-1".to_string(),
"provider-openai-chat-gemini-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -564,7 +564,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-gemini-local-disabled".to_string(),
"provider-openai-chat-gemini-local-disabled".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -594,7 +594,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:chat"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-gemini",
@@ -602,7 +602,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:chat": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
None,
@@ -622,7 +622,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:chat"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-gemini-disabled",
@@ -630,7 +630,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:chat": 2})),
Some(serde_json::json!({"gemini:generate_content": 2})),
None,
None,
None,
@@ -1026,7 +1026,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-claude-cli-local-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -1034,11 +1034,11 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".to_string()]),
key_api_formats: Some(vec!["claude:messages".to_string()]),
key_allowed_models: None,
key_capabilities: None,
key_internal_priority: 5,
key_global_priority_by_format: Some(serde_json::json!({"claude:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-openai-chat-claude-cli-local-1".to_string(),
global_model_id: "global-model-openai-chat-claude-cli-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1048,7 +1048,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-code-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1081,7 +1081,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-claude-cli-local-1".to_string(),
"provider-openai-chat-claude-cli-local-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -1113,7 +1113,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-claude-cli",
@@ -1121,7 +1121,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -1423,7 +1423,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-gemini-cli-local-1".to_string(),
endpoint_api_format: "gemini:cli".to_string(),
endpoint_api_format: "gemini:generate_content".to_string(),
endpoint_api_family: Some("gemini".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -1431,11 +1431,11 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["gemini:cli".to_string()]),
key_api_formats: Some(vec!["gemini:generate_content".to_string()]),
key_allowed_models: None,
key_capabilities: None,
key_internal_priority: 5,
key_global_priority_by_format: Some(serde_json::json!({"gemini:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"gemini:generate_content": 1})),
model_id: "model-openai-chat-gemini-cli-local-1".to_string(),
global_model_id: "global-model-openai-chat-gemini-cli-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1445,7 +1445,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "gemini-cli-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["gemini:cli".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1478,7 +1478,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-gemini-cli-local-1".to_string(),
"provider-openai-chat-gemini-cli-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -1510,7 +1510,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-gemini-cli",
@@ -1518,7 +1518,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:cli": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
None,
@@ -1820,7 +1820,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-claude-local-1".to_string(),
endpoint_api_format: "claude:chat".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("chat".to_string()),
endpoint_is_active: true,
@@ -1828,11 +1828,11 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
key_name: "prod".to_string(),
key_auth_type: "api_key".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:chat".to_string()]),
key_api_formats: Some(vec!["claude:messages".to_string()]),
key_allowed_models: None,
key_capabilities: None,
key_internal_priority: 5,
key_global_priority_by_format: Some(serde_json::json!({"claude:chat": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-openai-chat-claude-local-1".to_string(),
global_model_id: "global-model-openai-chat-claude-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1842,7 +1842,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-5-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:chat".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1875,7 +1875,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-claude-local-1".to_string(),
"provider-openai-chat-claude-local-1".to_string(),
"claude:chat".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("chat".to_string()),
true,
@@ -1907,7 +1907,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-claude",
@@ -1915,7 +1915,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:chat": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -2223,7 +2223,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-gemini-local-1".to_string(),
endpoint_api_format: "gemini:chat".to_string(),
endpoint_api_format: "gemini:generate_content".to_string(),
endpoint_api_family: Some("gemini".to_string()),
endpoint_kind: Some("chat".to_string()),
endpoint_is_active: true,
@@ -2231,11 +2231,11 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
key_name: "prod".to_string(),
key_auth_type: "api_key".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["gemini:chat".to_string()]),
key_api_formats: Some(vec!["gemini:generate_content".to_string()]),
key_allowed_models: None,
key_capabilities: None,
key_internal_priority: 5,
key_global_priority_by_format: Some(serde_json::json!({"gemini:chat": 1})),
key_global_priority_by_format: Some(serde_json::json!({"gemini:generate_content": 1})),
model_id: "model-openai-chat-gemini-local-1".to_string(),
global_model_id: "global-model-openai-chat-gemini-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -2245,7 +2245,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "gemini-2.5-pro-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["gemini:chat".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -2278,7 +2278,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-gemini-local-1".to_string(),
"provider-openai-chat-gemini-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -2310,7 +2310,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:chat"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-gemini",
@@ -2318,7 +2318,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:chat": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
None,