diff --git a/src/libs/OpenRouter/Generated/OpenRouter.GuardrailsClient.Create.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.GuardrailsClient.Create.g.cs index 90273ab5..08b2a24a 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.GuardrailsClient.Create.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.GuardrailsClient.Create.g.cs @@ -587,6 +587,10 @@ partial void ProcessCreateResponseContent( /// Create a guardrail
/// Create a new guardrail for the authenticated user. A newly created guardrail enforces nothing until it is assigned to API keys or organization members; `workspace_id` places the guardrail in a workspace but does not apply it to that workspace's traffic. To restrict all traffic in a workspace, update the workspace's default guardrail instead. Set `allowed_data_regions` to enforce [In-Region Routing](/docs/guides/features/in-region-routing#enforcing-in-region-routing-with-guardrails): governed requests must arrive through one of the listed OpenRouter domains and are rejected with a 403 otherwise. [Management key](/docs/guides/overview/auth/management-api-keys) required. /// + /// + /// Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.
+ /// Example: true + /// /// /// Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value. An empty array is rejected.
/// Example: [europe] @@ -676,6 +680,7 @@ partial void ProcessCreateResponseContent( /// public async global::System.Threading.Tasks.Task CreateAsync( string name, + bool? allowSafetyRetentionGoogle = default, global::System.Collections.Generic.IList? allowedDataRegions = default, global::System.Collections.Generic.IList? allowedModels = default, global::System.Collections.Generic.IList? allowedProviders = default, @@ -701,6 +706,7 @@ partial void ProcessCreateResponseContent( { var __request = new global::OpenRouter.CreateGuardrailRequest { + AllowSafetyRetentionGoogle = allowSafetyRetentionGoogle, AllowedDataRegions = allowedDataRegions, AllowedModels = allowedModels, AllowedProviders = allowedProviders, diff --git a/src/libs/OpenRouter/Generated/OpenRouter.GuardrailsClient.Update.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.GuardrailsClient.Update.g.cs index 4140a5a3..7cadeed6 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.GuardrailsClient.Update.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.GuardrailsClient.Update.g.cs @@ -680,6 +680,10 @@ partial void ProcessUpdateResponseContent( /// The unique identifier of the guardrail to update
/// Example: 550e8400-e29b-41d4-a716-446655440000 /// + /// + /// Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.
+ /// Example: true + /// /// /// Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value. An empty array is rejected.
/// Example: [europe] @@ -765,6 +769,7 @@ partial void ProcessUpdateResponseContent( /// public async global::System.Threading.Tasks.Task UpdateAsync( global::System.Guid id, + bool? allowSafetyRetentionGoogle = default, global::System.Collections.Generic.IList? allowedDataRegions = default, global::System.Collections.Generic.IList? allowedModels = default, global::System.Collections.Generic.IList? allowedProviders = default, @@ -790,6 +795,7 @@ partial void ProcessUpdateResponseContent( { var __request = new global::OpenRouter.UpdateGuardrailRequest { + AllowSafetyRetentionGoogle = allowSafetyRetentionGoogle, AllowedDataRegions = allowedDataRegions, AllowedModels = allowedModels, AllowedProviders = allowedProviders, diff --git a/src/libs/OpenRouter/Generated/OpenRouter.IGuardrailsClient.Create.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.IGuardrailsClient.Create.g.cs index 7cddb17c..dde2fd66 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.IGuardrailsClient.Create.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.IGuardrailsClient.Create.g.cs @@ -36,6 +36,10 @@ public partial interface IGuardrailsClient /// Create a guardrail
/// Create a new guardrail for the authenticated user. A newly created guardrail enforces nothing until it is assigned to API keys or organization members; `workspace_id` places the guardrail in a workspace but does not apply it to that workspace's traffic. To restrict all traffic in a workspace, update the workspace's default guardrail instead. Set `allowed_data_regions` to enforce [In-Region Routing](/docs/guides/features/in-region-routing#enforcing-in-region-routing-with-guardrails): governed requests must arrive through one of the listed OpenRouter domains and are rejected with a 403 otherwise. [Management key](/docs/guides/overview/auth/management-api-keys) required. /// + /// + /// Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.
+ /// Example: true + /// /// /// Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value. An empty array is rejected.
/// Example: [europe] @@ -125,6 +129,7 @@ public partial interface IGuardrailsClient /// global::System.Threading.Tasks.Task CreateAsync( string name, + bool? allowSafetyRetentionGoogle = default, global::System.Collections.Generic.IList? allowedDataRegions = default, global::System.Collections.Generic.IList? allowedModels = default, global::System.Collections.Generic.IList? allowedProviders = default, diff --git a/src/libs/OpenRouter/Generated/OpenRouter.IGuardrailsClient.Update.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.IGuardrailsClient.Update.g.cs index a442d676..56f3522b 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.IGuardrailsClient.Update.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.IGuardrailsClient.Update.g.cs @@ -50,6 +50,10 @@ public partial interface IGuardrailsClient /// The unique identifier of the guardrail to update
/// Example: 550e8400-e29b-41d4-a716-446655440000 /// + /// + /// Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.
+ /// Example: true + /// /// /// Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value. An empty array is rejected.
/// Example: [europe] @@ -135,6 +139,7 @@ public partial interface IGuardrailsClient /// global::System.Threading.Tasks.Task UpdateAsync( global::System.Guid id, + bool? allowSafetyRetentionGoogle = default, global::System.Collections.Generic.IList? allowedDataRegions = default, global::System.Collections.Generic.IList? allowedModels = default, global::System.Collections.Generic.IList? allowedProviders = default, diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.CreateGuardrailRequest.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.CreateGuardrailRequest.g.cs index ae29b777..4cee06cd 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.Models.CreateGuardrailRequest.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.CreateGuardrailRequest.g.cs @@ -6,10 +6,18 @@ namespace OpenRouter { /// - /// Example: {"allowed_models":null,"allowed_providers":["openai","anthropic","deepseek"],"content_filter_builtins":[{"action":"block","slug":"regex-prompt-injection"}],"content_filters":null,"description":"A guardrail for limiting API usage","enforce_zdr_anthropic":true,"enforce_zdr_google":false,"enforce_zdr_openai":true,"enforce_zdr_other":false,"enforce_zdr_xai":false,"ignored_models":null,"ignored_providers":null,"limit_usd":50,"name":"My New Guardrail","reset_interval":"monthly"} + /// Example: {"allow_safety_retention_google":null,"allowed_models":null,"allowed_providers":["openai","anthropic","deepseek"],"content_filter_builtins":[{"action":"block","slug":"regex-prompt-injection"}],"content_filters":null,"description":"A guardrail for limiting API usage","enforce_zdr_anthropic":true,"enforce_zdr_google":false,"enforce_zdr_openai":true,"enforce_zdr_other":false,"enforce_zdr_xai":false,"ignored_models":null,"ignored_providers":null,"limit_usd":50,"name":"My New Guardrail","reset_interval":"monthly"} /// public sealed partial class CreateGuardrailRequest { + /// + /// Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.
+ /// Example: true + ///
+ /// true + [global::System.Text.Json.Serialization.JsonPropertyName("allow_safety_retention_google")] + public bool? AllowSafetyRetentionGoogle { get; set; } + /// /// Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value. An empty array is rejected.
/// Example: [europe] @@ -202,6 +210,10 @@ public sealed partial class CreateGuardrailRequest /// Name for the new guardrail
/// Example: My New Guardrail /// + /// + /// Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.
+ /// Example: true + /// /// /// Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value. An empty array is rejected.
/// Example: [europe] @@ -287,6 +299,7 @@ public sealed partial class CreateGuardrailRequest #endif public CreateGuardrailRequest( string name, + bool? allowSafetyRetentionGoogle, global::System.Collections.Generic.IList? allowedDataRegions, global::System.Collections.Generic.IList? allowedModels, global::System.Collections.Generic.IList? allowedProviders, @@ -308,6 +321,7 @@ public CreateGuardrailRequest( global::OpenRouter.GuardrailInterval? resetInterval, global::System.Guid? workspaceId) { + this.AllowSafetyRetentionGoogle = allowSafetyRetentionGoogle; this.AllowedDataRegions = allowedDataRegions; this.AllowedModels = allowedModels; this.AllowedProviders = allowedProviders; diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.CreateGuardrailResponse.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.CreateGuardrailResponse.g.cs index 80d01d5f..c6946530 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.Models.CreateGuardrailResponse.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.CreateGuardrailResponse.g.cs @@ -4,7 +4,7 @@ namespace OpenRouter { /// - /// Example: {"data":{"allowed_models":null,"allowed_providers":["openai","anthropic","google"],"content_filter_builtins":[{"action":"redact","label":"[EMAIL]","slug":"email"}],"content_filters":null,"created_at":"2025-08-24T10:30:00Z","description":"A guardrail for limiting API usage","enable_free_model_publication":false,"enable_free_model_training":true,"enable_paid_model_training":true,"enforce_zdr":null,"enforce_zdr_anthropic":true,"enforce_zdr_google":false,"enforce_zdr_openai":true,"enforce_zdr_other":false,"enforce_zdr_xai":false,"id":"550e8400-e29b-41d4-a716-446655440000","ignored_models":null,"ignored_providers":null,"include_byok_in_budgets":false,"limit_usd":50,"name":"My New Guardrail","reset_interval":"monthly","updated_at":null,"workspace_id":"0df9e665-d932-5740-b2c7-b52af166bc11"}} + /// Example: {"data":{"allow_safety_retention_google":null,"allowed_models":null,"allowed_providers":["openai","anthropic","google"],"content_filter_builtins":[{"action":"redact","label":"[EMAIL]","slug":"email"}],"content_filters":null,"created_at":"2025-08-24T10:30:00Z","description":"A guardrail for limiting API usage","enable_free_model_publication":false,"enable_free_model_training":true,"enable_paid_model_training":true,"enforce_zdr":null,"enforce_zdr_anthropic":true,"enforce_zdr_google":false,"enforce_zdr_openai":true,"enforce_zdr_other":false,"enforce_zdr_xai":false,"id":"550e8400-e29b-41d4-a716-446655440000","ignored_models":null,"ignored_providers":null,"include_byok_in_budgets":false,"limit_usd":50,"name":"My New Guardrail","reset_interval":"monthly","updated_at":null,"workspace_id":"0df9e665-d932-5740-b2c7-b52af166bc11"}} /// public sealed partial class CreateGuardrailResponse { diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.GetGuardrailResponse.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.GetGuardrailResponse.g.cs index facf178c..9f5944d1 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.Models.GetGuardrailResponse.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.GetGuardrailResponse.g.cs @@ -4,7 +4,7 @@ namespace OpenRouter { /// - /// Example: {"data":{"allowed_models":null,"allowed_providers":["openai","anthropic","google"],"content_filter_builtins":[{"action":"redact","label":"[EMAIL]","slug":"email"}],"content_filters":null,"created_at":"2025-08-24T10:30:00Z","description":"Guardrail for production environment","enable_free_model_publication":false,"enable_free_model_training":true,"enable_paid_model_training":true,"enforce_zdr":null,"enforce_zdr_anthropic":true,"enforce_zdr_google":false,"enforce_zdr_openai":true,"enforce_zdr_other":false,"enforce_zdr_xai":false,"id":"550e8400-e29b-41d4-a716-446655440000","ignored_models":null,"ignored_providers":null,"include_byok_in_budgets":false,"limit_usd":100,"name":"Production Guardrail","reset_interval":"monthly","updated_at":"2025-08-24T15:45:00Z","workspace_id":"0df9e665-d932-5740-b2c7-b52af166bc11"}} + /// Example: {"data":{"allow_safety_retention_google":null,"allowed_models":null,"allowed_providers":["openai","anthropic","google"],"content_filter_builtins":[{"action":"redact","label":"[EMAIL]","slug":"email"}],"content_filters":null,"created_at":"2025-08-24T10:30:00Z","description":"Guardrail for production environment","enable_free_model_publication":false,"enable_free_model_training":true,"enable_paid_model_training":true,"enforce_zdr":null,"enforce_zdr_anthropic":true,"enforce_zdr_google":false,"enforce_zdr_openai":true,"enforce_zdr_other":false,"enforce_zdr_xai":false,"id":"550e8400-e29b-41d4-a716-446655440000","ignored_models":null,"ignored_providers":null,"include_byok_in_budgets":false,"limit_usd":100,"name":"Production Guardrail","reset_interval":"monthly","updated_at":"2025-08-24T15:45:00Z","workspace_id":"0df9e665-d932-5740-b2c7-b52af166bc11"}} /// public sealed partial class GetGuardrailResponse { diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.Guardrail.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.Guardrail.g.cs index 3e3ab447..28ead8b2 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.Models.Guardrail.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.Guardrail.g.cs @@ -6,10 +6,18 @@ namespace OpenRouter { /// - /// Example: {"allowed_data_regions":null,"allowed_models":null,"allowed_providers":["openai","anthropic","google"],"content_filter_builtins":[{"action":"redact","label":"[EMAIL]","slug":"email"}],"content_filters":null,"created_at":"2025-08-24T10:30:00Z","description":"Guardrail for production environment","enable_free_model_publication":false,"enable_free_model_training":true,"enable_paid_model_training":true,"enforce_zdr":null,"enforce_zdr_anthropic":true,"enforce_zdr_google":false,"enforce_zdr_openai":true,"enforce_zdr_other":false,"enforce_zdr_xai":false,"id":"550e8400-e29b-41d4-a716-446655440000","ignored_models":null,"ignored_providers":null,"include_byok_in_budgets":false,"limit_usd":100,"name":"Production Guardrail","reset_interval":"monthly","updated_at":"2025-08-24T15:45:00Z","workspace_id":"0df9e665-d932-5740-b2c7-b52af166bc11"} + /// Example: {"allow_safety_retention_google":null,"allowed_data_regions":null,"allowed_models":null,"allowed_providers":["openai","anthropic","google"],"content_filter_builtins":[{"action":"redact","label":"[EMAIL]","slug":"email"}],"content_filters":null,"created_at":"2025-08-24T10:30:00Z","description":"Guardrail for production environment","enable_free_model_publication":false,"enable_free_model_training":true,"enable_paid_model_training":true,"enforce_zdr":null,"enforce_zdr_anthropic":true,"enforce_zdr_google":false,"enforce_zdr_openai":true,"enforce_zdr_other":false,"enforce_zdr_xai":false,"id":"550e8400-e29b-41d4-a716-446655440000","ignored_models":null,"ignored_providers":null,"include_byok_in_budgets":false,"limit_usd":100,"name":"Production Guardrail","reset_interval":"monthly","updated_at":"2025-08-24T15:45:00Z","workspace_id":"0df9e665-d932-5740-b2c7-b52af166bc11"} /// public sealed partial class Guardrail { + /// + /// Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.
+ /// Example: true + ///
+ /// true + [global::System.Text.Json.Serialization.JsonPropertyName("allow_safety_retention_google")] + public bool? AllowSafetyRetentionGoogle { get; set; } + /// /// Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value.
/// Example: [europe] @@ -241,6 +249,10 @@ public sealed partial class Guardrail /// Name of the guardrail
/// Example: Production Guardrail /// + /// + /// Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.
+ /// Example: true + /// /// /// Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value.
/// Example: [europe] @@ -329,6 +341,7 @@ public Guardrail( global::System.Guid id, bool includeByokInBudgets, string name, + bool? allowSafetyRetentionGoogle, global::System.Collections.Generic.IList? allowedDataRegions, global::System.Collections.Generic.IList? allowedModels, global::System.Collections.Generic.IList? allowedProviders, @@ -350,6 +363,7 @@ public Guardrail( string? updatedAt, string? workspaceId) { + this.AllowSafetyRetentionGoogle = allowSafetyRetentionGoogle; this.AllowedDataRegions = allowedDataRegions; this.AllowedModels = allowedModels; this.AllowedProviders = allowedProviders; diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.ListGuardrailsResponse.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.ListGuardrailsResponse.g.cs index 7a1a8d62..f8a5682d 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.Models.ListGuardrailsResponse.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.ListGuardrailsResponse.g.cs @@ -4,7 +4,7 @@ namespace OpenRouter { /// - /// Example: {"data":[{"allowed_models":null,"allowed_providers":["openai","anthropic","google"],"content_filter_builtins":[{"action":"redact","label":"[EMAIL]","slug":"email"}],"content_filters":null,"created_at":"2025-08-24T10:30:00Z","description":"Guardrail for production environment","enable_free_model_publication":false,"enable_free_model_training":true,"enable_paid_model_training":true,"enforce_zdr":null,"enforce_zdr_anthropic":true,"enforce_zdr_google":false,"enforce_zdr_openai":true,"enforce_zdr_other":false,"enforce_zdr_xai":false,"id":"550e8400-e29b-41d4-a716-446655440000","ignored_models":null,"ignored_providers":null,"include_byok_in_budgets":false,"limit_usd":100,"name":"Production Guardrail","reset_interval":"monthly","updated_at":"2025-08-24T15:45:00Z","workspace_id":"0df9e665-d932-5740-b2c7-b52af166bc11"}],"total_count":1} + /// Example: {"data":[{"allow_safety_retention_google":null,"allowed_models":null,"allowed_providers":["openai","anthropic","google"],"content_filter_builtins":[{"action":"redact","label":"[EMAIL]","slug":"email"}],"content_filters":null,"created_at":"2025-08-24T10:30:00Z","description":"Guardrail for production environment","enable_free_model_publication":false,"enable_free_model_training":true,"enable_paid_model_training":true,"enforce_zdr":null,"enforce_zdr_anthropic":true,"enforce_zdr_google":false,"enforce_zdr_openai":true,"enforce_zdr_other":false,"enforce_zdr_xai":false,"id":"550e8400-e29b-41d4-a716-446655440000","ignored_models":null,"ignored_providers":null,"include_byok_in_budgets":false,"limit_usd":100,"name":"Production Guardrail","reset_interval":"monthly","updated_at":"2025-08-24T15:45:00Z","workspace_id":"0df9e665-d932-5740-b2c7-b52af166bc11"}],"total_count":1} /// public sealed partial class ListGuardrailsResponse { diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.MessagesResultVariant2.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.MessagesResultVariant2.g.cs index d963c630..77ebb46d 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.Models.MessagesResultVariant2.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.MessagesResultVariant2.g.cs @@ -22,10 +22,12 @@ public sealed partial class MessagesResultVariant2 public global::OpenRouter.OpenRouterMetadata? OpenrouterMetadata { get; set; } /// - /// + /// Example: OpenAI /// + /// OpenAI [global::System.Text.Json.Serialization.JsonPropertyName("provider")] - public string? Provider { get; set; } + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::OpenRouter.JsonConverters.ProviderNameJsonConverter))] + public global::OpenRouter.ProviderName? Provider { get; set; } /// /// @@ -54,7 +56,9 @@ public sealed partial class MessagesResultVariant2 /// /// Example: {"attempt":1,"endpoints":{"available":[{"model":"openai/gpt-4o","provider":"OpenAI","selected":true}],"total":1},"generation_time":2016,"is_byok":false,"region":"iad","requested":"openai/gpt-4o","strategy":"direct","summary":"available=1, selected=OpenAI"} /// - /// + /// + /// Example: OpenAI + /// /// /// /// Example: {"cache_creation":null,"cache_creation_input_tokens":null,"cache_read_input_tokens":null,"inference_geo":null,"input_tokens":100,"output_tokens":50,"output_tokens_details":null,"server_tool_use":null,"service_tier":"standard"} @@ -65,7 +69,7 @@ public sealed partial class MessagesResultVariant2 public MessagesResultVariant2( global::OpenRouter.MessagesResultVariant2ContextManagement? contextManagement, global::OpenRouter.OpenRouterMetadata? openrouterMetadata, - string? provider, + global::OpenRouter.ProviderName? provider, global::System.Collections.Generic.IList? safeguardResults, global::OpenRouter.AllOf? usage) { diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.UpdateGuardrailRequest.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.UpdateGuardrailRequest.g.cs index ebf8b580..25f3f32d 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.Models.UpdateGuardrailRequest.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.UpdateGuardrailRequest.g.cs @@ -10,6 +10,14 @@ namespace OpenRouter /// public sealed partial class UpdateGuardrailRequest { + /// + /// Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.
+ /// Example: true + ///
+ /// true + [global::System.Text.Json.Serialization.JsonPropertyName("allow_safety_retention_google")] + public bool? AllowSafetyRetentionGoogle { get; set; } + /// /// Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value. An empty array is rejected.
/// Example: [europe] @@ -189,6 +197,10 @@ public sealed partial class UpdateGuardrailRequest /// /// Initializes a new instance of the class. /// + /// + /// Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.
+ /// Example: true + /// /// /// Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value. An empty array is rejected.
/// Example: [europe] @@ -273,6 +285,7 @@ public sealed partial class UpdateGuardrailRequest [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] #endif public UpdateGuardrailRequest( + bool? allowSafetyRetentionGoogle, global::System.Collections.Generic.IList? allowedDataRegions, global::System.Collections.Generic.IList? allowedModels, global::System.Collections.Generic.IList? allowedProviders, @@ -294,6 +307,7 @@ public UpdateGuardrailRequest( string? name, global::OpenRouter.GuardrailInterval? resetInterval) { + this.AllowSafetyRetentionGoogle = allowSafetyRetentionGoogle; this.AllowedDataRegions = allowedDataRegions; this.AllowedModels = allowedModels; this.AllowedProviders = allowedProviders; diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.UpdateGuardrailResponse.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.UpdateGuardrailResponse.g.cs index b7f54a34..4b8556b9 100644 --- a/src/libs/OpenRouter/Generated/OpenRouter.Models.UpdateGuardrailResponse.g.cs +++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.UpdateGuardrailResponse.g.cs @@ -4,7 +4,7 @@ namespace OpenRouter { /// - /// Example: {"data":{"allowed_models":null,"allowed_providers":["openai"],"content_filter_builtins":[{"action":"redact","label":"[EMAIL]","slug":"email"}],"content_filters":null,"created_at":"2025-08-24T10:30:00Z","description":"Updated description","enable_free_model_publication":false,"enable_free_model_training":true,"enable_paid_model_training":true,"enforce_zdr":null,"enforce_zdr_anthropic":true,"enforce_zdr_google":true,"enforce_zdr_openai":true,"enforce_zdr_other":true,"enforce_zdr_xai":true,"id":"550e8400-e29b-41d4-a716-446655440000","ignored_models":null,"ignored_providers":null,"include_byok_in_budgets":true,"limit_usd":75,"name":"Updated Guardrail Name","reset_interval":"weekly","updated_at":"2025-08-24T16:00:00Z","workspace_id":"0df9e665-d932-5740-b2c7-b52af166bc11"}} + /// Example: {"data":{"allow_safety_retention_google":null,"allowed_models":null,"allowed_providers":["openai"],"content_filter_builtins":[{"action":"redact","label":"[EMAIL]","slug":"email"}],"content_filters":null,"created_at":"2025-08-24T10:30:00Z","description":"Updated description","enable_free_model_publication":false,"enable_free_model_training":true,"enable_paid_model_training":true,"enforce_zdr":null,"enforce_zdr_anthropic":true,"enforce_zdr_google":true,"enforce_zdr_openai":true,"enforce_zdr_other":true,"enforce_zdr_xai":true,"id":"550e8400-e29b-41d4-a716-446655440000","ignored_models":null,"ignored_providers":null,"include_byok_in_budgets":true,"limit_usd":75,"name":"Updated Guardrail Name","reset_interval":"weekly","updated_at":"2025-08-24T16:00:00Z","workspace_id":"0df9e665-d932-5740-b2c7-b52af166bc11"}} /// public sealed partial class UpdateGuardrailResponse { diff --git a/src/libs/OpenRouter/Generated/autosdk.generated-examples.json b/src/libs/OpenRouter/Generated/autosdk.generated-examples.json index 8c21fb76..06e6117e 100644 --- a/src/libs/OpenRouter/Generated/autosdk.generated-examples.json +++ b/src/libs/OpenRouter/Generated/autosdk.generated-examples.json @@ -567,7 +567,7 @@ "Slug": "createguardrail", "Description": "Create a new guardrail for the authenticated user. A newly created guardrail enforces nothing until it is assigned to API keys or organization members; \u0060workspace_id\u0060 places the guardrail in a workspace but does not apply it to that workspace\u0027s traffic. To restrict all traffic in a workspace, update the workspace\u0027s default guardrail instead. Set \u0060allowed_data_regions\u0060 to enforce [In-Region Routing](/docs/guides/features/in-region-routing#enforcing-in-region-routing-with-guardrails): governed requests must arrive through one of the listed OpenRouter domains and are rejected with a 403 otherwise. [Management key](/docs/guides/overview/auth/management-api-keys) required.", "Language": "csharp", - "Code": "using var client = new OpenRouterClient(apiKey);\n\nvar request = global::System.Text.Json.JsonSerializer.Deserialize\u003Cglobal::OpenRouter.DecisionsRequest\u003E(\n @\u0022{\n \u0022\u0022allowed_data_regions\u0022\u0022: [\n \u0022\u0022europe\u0022\u0022\n ],\n \u0022\u0022allowed_models\u0022\u0022: null,\n \u0022\u0022allowed_providers\u0022\u0022: [\n \u0022\u0022openai\u0022\u0022,\n \u0022\u0022anthropic\u0022\u0022,\n \u0022\u0022deepseek\u0022\u0022\n ],\n \u0022\u0022description\u0022\u0022: \u0022\u0022A guardrail for limiting API usage\u0022\u0022,\n \u0022\u0022enforce_zdr_anthropic\u0022\u0022: true,\n \u0022\u0022enforce_zdr_google\u0022\u0022: false,\n \u0022\u0022enforce_zdr_openai\u0022\u0022: true,\n \u0022\u0022enforce_zdr_other\u0022\u0022: false,\n \u0022\u0022enforce_zdr_xai\u0022\u0022: false,\n \u0022\u0022ignored_models\u0022\u0022: null,\n \u0022\u0022ignored_providers\u0022\u0022: null,\n \u0022\u0022limit_usd\u0022\u0022: 50,\n \u0022\u0022name\u0022\u0022: \u0022\u0022My New Guardrail\u0022\u0022,\n \u0022\u0022reset_interval\u0022\u0022: \u0022\u0022monthly\u0022\u0022\n}\u0022)!;\n\nvar response = await client.AlphaDecisions.CreateAsync(\n request: request\n);\n\n// Example response:\n// {\n// \u0022data\u0022: {\n// \u0022allowed_models\u0022: null,\n// \u0022allowed_providers\u0022: [\n// \u0022openai\u0022,\n// \u0022anthropic\u0022,\n// \u0022google\u0022\n// ],\n// \u0022created_at\u0022: \u00222025-08-24T10:30:00Z\u0022,\n// \u0022description\u0022: \u0022A guardrail for limiting API usage\u0022,\n// \u0022enforce_zdr\u0022: null,\n// \u0022enforce_zdr_anthropic\u0022: true,\n// \u0022enforce_zdr_google\u0022: false,\n// \u0022enforce_zdr_openai\u0022: true,\n// \u0022enforce_zdr_other\u0022: false,\n// \u0022enforce_zdr_xai\u0022: false,\n// \u0022id\u0022: \u0022550e8400-e29b-41d4-a716-446655440000\u0022,\n// \u0022ignored_models\u0022: null,\n// \u0022ignored_providers\u0022: null,\n// \u0022include_byok_in_budgets\u0022: false,\n// \u0022limit_usd\u0022: 50,\n// \u0022name\u0022: \u0022My New Guardrail\u0022,\n// \u0022reset_interval\u0022: \u0022monthly\u0022,\n// \u0022updated_at\u0022: null,\n// \u0022workspace_id\u0022: \u00220df9e665-d932-5740-b2c7-b52af166bc11\u0022\n// }\n// }", + "Code": "using var client = new OpenRouterClient(apiKey);\n\nvar request = global::System.Text.Json.JsonSerializer.Deserialize\u003Cglobal::OpenRouter.DecisionsRequest\u003E(\n @\u0022{\n \u0022\u0022allow_safety_retention_google\u0022\u0022: null,\n \u0022\u0022allowed_data_regions\u0022\u0022: [\n \u0022\u0022europe\u0022\u0022\n ],\n \u0022\u0022allowed_models\u0022\u0022: null,\n \u0022\u0022allowed_providers\u0022\u0022: [\n \u0022\u0022openai\u0022\u0022,\n \u0022\u0022anthropic\u0022\u0022,\n \u0022\u0022deepseek\u0022\u0022\n ],\n \u0022\u0022description\u0022\u0022: \u0022\u0022A guardrail for limiting API usage\u0022\u0022,\n \u0022\u0022enforce_zdr_anthropic\u0022\u0022: true,\n \u0022\u0022enforce_zdr_google\u0022\u0022: false,\n \u0022\u0022enforce_zdr_openai\u0022\u0022: true,\n \u0022\u0022enforce_zdr_other\u0022\u0022: false,\n \u0022\u0022enforce_zdr_xai\u0022\u0022: false,\n \u0022\u0022ignored_models\u0022\u0022: null,\n \u0022\u0022ignored_providers\u0022\u0022: null,\n \u0022\u0022limit_usd\u0022\u0022: 50,\n \u0022\u0022name\u0022\u0022: \u0022\u0022My New Guardrail\u0022\u0022,\n \u0022\u0022reset_interval\u0022\u0022: \u0022\u0022monthly\u0022\u0022\n}\u0022)!;\n\nvar response = await client.AlphaDecisions.CreateAsync(\n request: request\n);\n\n// Example response:\n// {\n// \u0022data\u0022: {\n// \u0022allow_safety_retention_google\u0022: null,\n// \u0022allowed_models\u0022: null,\n// \u0022allowed_providers\u0022: [\n// \u0022openai\u0022,\n// \u0022anthropic\u0022,\n// \u0022google\u0022\n// ],\n// \u0022created_at\u0022: \u00222025-08-24T10:30:00Z\u0022,\n// \u0022description\u0022: \u0022A guardrail for limiting API usage\u0022,\n// \u0022enforce_zdr\u0022: null,\n// \u0022enforce_zdr_anthropic\u0022: true,\n// \u0022enforce_zdr_google\u0022: false,\n// \u0022enforce_zdr_openai\u0022: true,\n// \u0022enforce_zdr_other\u0022: false,\n// \u0022enforce_zdr_xai\u0022: false,\n// \u0022id\u0022: \u0022550e8400-e29b-41d4-a716-446655440000\u0022,\n// \u0022ignored_models\u0022: null,\n// \u0022ignored_providers\u0022: null,\n// \u0022include_byok_in_budgets\u0022: false,\n// \u0022limit_usd\u0022: 50,\n// \u0022name\u0022: \u0022My New Guardrail\u0022,\n// \u0022reset_interval\u0022: \u0022monthly\u0022,\n// \u0022updated_at\u0022: null,\n// \u0022workspace_id\u0022: \u00220df9e665-d932-5740-b2c7-b52af166bc11\u0022\n// }\n// }", "Format": "sdk", "OperationId": "createGuardrail", "Setup": "This example assumes \u0060using OpenRouter;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." diff --git a/src/libs/OpenRouter/openapi.yaml b/src/libs/OpenRouter/openapi.yaml index 91f6e886..3fee085e 100644 --- a/src/libs/OpenRouter/openapi.yaml +++ b/src/libs/OpenRouter/openapi.yaml @@ -13528,6 +13528,7 @@ }, "CreateGuardrailRequest": { "example": { + "allow_safety_retention_google": null, "allowed_models": null, "allowed_providers": [ "openai", @@ -13554,6 +13555,14 @@ "reset_interval": "monthly" }, "properties": { + "allow_safety_retention_google": { + "description": "Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.", + "example": true, + "type": [ + "boolean", + "null" + ] + }, "allowed_data_regions": { "description": "Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value. An empty array is rejected.", "example": [ @@ -13782,6 +13791,7 @@ "CreateGuardrailResponse": { "example": { "data": { + "allow_safety_retention_google": null, "allowed_models": null, "allowed_providers": [ "openai", @@ -18292,6 +18302,7 @@ "GetGuardrailResponse": { "example": { "data": { + "allow_safety_retention_google": null, "allowed_models": null, "allowed_providers": [ "openai", @@ -18623,6 +18634,7 @@ }, "Guardrail": { "example": { + "allow_safety_retention_google": null, "allowed_data_regions": null, "allowed_models": null, "allowed_providers": [ @@ -18660,6 +18672,14 @@ "workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11" }, "properties": { + "allow_safety_retention_google": { + "description": "Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.", + "example": true, + "type": [ + "boolean", + "null" + ] + }, "allowed_data_regions": { "description": "Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value.", "example": [ @@ -22599,6 +22619,7 @@ "example": { "data": [ { + "allow_safety_retention_google": null, "allowed_models": null, "allowed_providers": [ "openai", @@ -25584,7 +25605,7 @@ "$ref": "#/components/schemas/OpenRouterMetadata" }, "provider": { - "type": "string" + "$ref": "#/components/schemas/ProviderName" }, "safeguard_results": { "items": { @@ -44454,6 +44475,14 @@ "reset_interval": "weekly" }, "properties": { + "allow_safety_retention_google": { + "description": "Whether ZDR requests for Google models may use Safety Retention endpoints, which keep only prompts flagged by safety classifiers. `false` requires strict ZDR for Google. `null` inherits the account setting, which is on by default. A guardrail cannot turn this on for an account that turned it off.", + "example": true, + "type": [ + "boolean", + "null" + ] + }, "allowed_data_regions": { "description": "Data regions through which requests governed by this guardrail must arrive. `global` is https://openrouter.ai, `europe` is https://eu.openrouter.ai, and `us` is https://us.openrouter.ai. Requests arriving through any other region are rejected. `null` leaves the ingress region unrestricted. When several guardrails apply (workspace default, member, API key), the effective regions are the intersection of every non-null value. An empty array is rejected.", "example": [ @@ -44665,6 +44694,7 @@ "UpdateGuardrailResponse": { "example": { "data": { + "allow_safety_retention_google": null, "allowed_models": null, "allowed_providers": [ "openai" @@ -56865,6 +56895,7 @@ "content": { "application/json": { "example": { + "allow_safety_retention_google": null, "allowed_data_regions": [ "europe" ], @@ -56899,6 +56930,7 @@ "application/json": { "example": { "data": { + "allow_safety_retention_google": null, "allowed_models": null, "allowed_providers": [ "openai", @@ -57246,6 +57278,7 @@ "application/json": { "example": { "data": { + "allow_safety_retention_google": null, "allowed_models": null, "allowed_providers": [ "openai"