diff --git a/src/libs/ResembleAI/Generated/ResembleAI.ISubpackageSpeechToTextClient.CreateTranscript.g.cs b/src/libs/ResembleAI/Generated/ResembleAI.ISubpackageSpeechToTextClient.CreateTranscript.g.cs index cf8be5e..458b976 100644 --- a/src/libs/ResembleAI/Generated/ResembleAI.ISubpackageSpeechToTextClient.CreateTranscript.g.cs +++ b/src/libs/ResembleAI/Generated/ResembleAI.ISubpackageSpeechToTextClient.CreateTranscript.g.cs @@ -43,6 +43,13 @@ public partial interface ISubpackageSpeechToTextClient /// /// Optional intelligence question to evaluate after transcription /// + /// + /// Public HTTPS URL that receives a POST with the result when processing finishes. Private, loopback, link-local, and non-HTTPS URLs are rejected. Required when zero_retention_mode is true. + /// + /// + /// Enable zero retention. The uploaded media and any temporary processing copies are permanently deleted after transcription, and the transcript content is purged after one delivery to callback_url (which is mandatory in this mode). privacy_mode is accepted as an alias. Plan feature — requests are rejected with 402 if not included in your plan.
+ /// Default Value: false + /// /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering. /// The token to cancel the operation with /// @@ -50,6 +57,8 @@ public partial interface ISubpackageSpeechToTextClient byte[]? file = default, string? filename = default, string? query = default, + string? callbackUrl = default, + bool? zeroRetentionMode = default, global::ResembleAI.AutoSDKRequestOptions? requestOptions = default, global::System.Threading.CancellationToken cancellationToken = default); } diff --git a/src/libs/ResembleAI/Generated/ResembleAI.Models.CreateTranscriptRequest.g.cs b/src/libs/ResembleAI/Generated/ResembleAI.Models.CreateTranscriptRequest.g.cs index a551e7c..606dc2e 100644 --- a/src/libs/ResembleAI/Generated/ResembleAI.Models.CreateTranscriptRequest.g.cs +++ b/src/libs/ResembleAI/Generated/ResembleAI.Models.CreateTranscriptRequest.g.cs @@ -26,6 +26,19 @@ public sealed partial class CreateTranscriptRequest [global::System.Text.Json.Serialization.JsonPropertyName("query")] public string? Query { get; set; } + /// + /// Public HTTPS URL that receives a POST with the result when processing finishes. Private, loopback, link-local, and non-HTTPS URLs are rejected. Required when zero_retention_mode is true. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("callback_url")] + public string? CallbackUrl { get; set; } + + /// + /// Enable zero retention. The uploaded media and any temporary processing copies are permanently deleted after transcription, and the transcript content is purged after one delivery to callback_url (which is mandatory in this mode). privacy_mode is accepted as an alias. Plan feature — requests are rejected with 402 if not included in your plan.
+ /// Default Value: false + ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("zero_retention_mode")] + public bool? ZeroRetentionMode { get; set; } + /// /// Additional properties that are not explicitly defined in the schema /// @@ -44,17 +57,28 @@ public sealed partial class CreateTranscriptRequest /// /// Optional intelligence question to evaluate after transcription /// + /// + /// Public HTTPS URL that receives a POST with the result when processing finishes. Private, loopback, link-local, and non-HTTPS URLs are rejected. Required when zero_retention_mode is true. + /// + /// + /// Enable zero retention. The uploaded media and any temporary processing copies are permanently deleted after transcription, and the transcript content is purged after one delivery to callback_url (which is mandatory in this mode). privacy_mode is accepted as an alias. Plan feature — requests are rejected with 402 if not included in your plan.
+ /// Default Value: false + /// #if NET7_0_OR_GREATER [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] #endif public CreateTranscriptRequest( byte[]? file, string? filename, - string? query) + string? query, + string? callbackUrl, + bool? zeroRetentionMode) { this.File = file; this.Filename = filename; this.Query = query; + this.CallbackUrl = callbackUrl; + this.ZeroRetentionMode = zeroRetentionMode; } /// diff --git a/src/libs/ResembleAI/Generated/ResembleAI.Models.SpeechToTextPostResponsesContentApplicationJsonSchemaItem.g.cs b/src/libs/ResembleAI/Generated/ResembleAI.Models.SpeechToTextPostResponsesContentApplicationJsonSchemaItem.g.cs index ab8dca1..55118fe 100644 --- a/src/libs/ResembleAI/Generated/ResembleAI.Models.SpeechToTextPostResponsesContentApplicationJsonSchemaItem.g.cs +++ b/src/libs/ResembleAI/Generated/ResembleAI.Models.SpeechToTextPostResponsesContentApplicationJsonSchemaItem.g.cs @@ -21,6 +21,12 @@ public sealed partial class SpeechToTextPostResponsesContentApplicationJsonSchem [global::System.Text.Json.Serialization.JsonConverter(typeof(global::ResembleAI.JsonConverters.SpeechToTextPostResponsesContentApplicationJsonSchemaItemStatusJsonConverter))] public global::ResembleAI.SpeechToTextPostResponsesContentApplicationJsonSchemaItemStatus? Status { get; set; } + /// + /// Whether the transcript was created with zero retention + /// + [global::System.Text.Json.Serialization.JsonPropertyName("privacy_mode")] + public bool? PrivacyMode { get; set; } + /// /// /// @@ -44,6 +50,9 @@ public sealed partial class SpeechToTextPostResponsesContentApplicationJsonSchem /// /// /// + /// + /// Whether the transcript was created with zero retention + /// /// /// #if NET7_0_OR_GREATER @@ -52,11 +61,13 @@ public sealed partial class SpeechToTextPostResponsesContentApplicationJsonSchem public SpeechToTextPostResponsesContentApplicationJsonSchemaItem( global::System.Guid? uuid, global::ResembleAI.SpeechToTextPostResponsesContentApplicationJsonSchemaItemStatus? status, + bool? privacyMode, global::System.DateTime? createdAt, global::System.DateTime? updatedAt) { this.Uuid = uuid; this.Status = status; + this.PrivacyMode = privacyMode; this.CreatedAt = createdAt; this.UpdatedAt = updatedAt; } diff --git a/src/libs/ResembleAI/Generated/ResembleAI.Models.SpeechToTextUuidGetResponsesContentApplicationJsonSchemaItem.g.cs b/src/libs/ResembleAI/Generated/ResembleAI.Models.SpeechToTextUuidGetResponsesContentApplicationJsonSchemaItem.g.cs index 817d227..30bfe28 100644 --- a/src/libs/ResembleAI/Generated/ResembleAI.Models.SpeechToTextUuidGetResponsesContentApplicationJsonSchemaItem.g.cs +++ b/src/libs/ResembleAI/Generated/ResembleAI.Models.SpeechToTextUuidGetResponsesContentApplicationJsonSchemaItem.g.cs @@ -22,7 +22,7 @@ public sealed partial class SpeechToTextUuidGetResponsesContentApplicationJsonSc public global::ResembleAI.SpeechToTextUuidGetResponsesContentApplicationJsonSchemaItemStatus? Status { get; set; } /// - /// + /// Absent for zero-retention transcripts after the content purge /// [global::System.Text.Json.Serialization.JsonPropertyName("text")] public string? Text { get; set; } @@ -40,7 +40,7 @@ public sealed partial class SpeechToTextUuidGetResponsesContentApplicationJsonSc public double? DurationSeconds { get; set; } /// - /// + /// Absent once the media has been deleted (zero retention) /// [global::System.Text.Json.Serialization.JsonPropertyName("file_url")] public string? FileUrl { get; set; } @@ -57,6 +57,24 @@ public sealed partial class SpeechToTextUuidGetResponsesContentApplicationJsonSc [global::System.Text.Json.Serialization.JsonPropertyName("answer")] public string? Answer { get; set; } + /// + /// Whether the transcript was created with zero retention + /// + [global::System.Text.Json.Serialization.JsonPropertyName("privacy_mode")] + public bool? PrivacyMode { get; set; } + + /// + /// When the uploaded media was permanently deleted (zero retention) + /// + [global::System.Text.Json.Serialization.JsonPropertyName("file_deleted_at")] + public global::System.DateTime? FileDeletedAt { get; set; } + + /// + /// When the transcript content was permanently purged (zero retention) + /// + [global::System.Text.Json.Serialization.JsonPropertyName("content_deleted_at")] + public global::System.DateTime? ContentDeletedAt { get; set; } + /// /// /// @@ -80,12 +98,25 @@ public sealed partial class SpeechToTextUuidGetResponsesContentApplicationJsonSc /// /// /// - /// + /// + /// Absent for zero-retention transcripts after the content purge + /// /// /// - /// + /// + /// Absent once the media has been deleted (zero retention) + /// /// /// + /// + /// Whether the transcript was created with zero retention + /// + /// + /// When the uploaded media was permanently deleted (zero retention) + /// + /// + /// When the transcript content was permanently purged (zero retention) + /// /// /// #if NET7_0_OR_GREATER @@ -100,6 +131,9 @@ public SpeechToTextUuidGetResponsesContentApplicationJsonSchemaItem( string? fileUrl, string? query, string? answer, + bool? privacyMode, + global::System.DateTime? fileDeletedAt, + global::System.DateTime? contentDeletedAt, global::System.DateTime? createdAt, global::System.DateTime? updatedAt) { @@ -111,6 +145,9 @@ public SpeechToTextUuidGetResponsesContentApplicationJsonSchemaItem( this.FileUrl = fileUrl; this.Query = query; this.Answer = answer; + this.PrivacyMode = privacyMode; + this.FileDeletedAt = fileDeletedAt; + this.ContentDeletedAt = contentDeletedAt; this.CreatedAt = createdAt; this.UpdatedAt = updatedAt; } diff --git a/src/libs/ResembleAI/Generated/ResembleAI.SubpackageSpeechToTextClient.AskTranscriptQuestion.g.cs b/src/libs/ResembleAI/Generated/ResembleAI.SubpackageSpeechToTextClient.AskTranscriptQuestion.g.cs index cb2019b..e8f2458 100644 --- a/src/libs/ResembleAI/Generated/ResembleAI.SubpackageSpeechToTextClient.AskTranscriptQuestion.g.cs +++ b/src/libs/ResembleAI/Generated/ResembleAI.SubpackageSpeechToTextClient.AskTranscriptQuestion.g.cs @@ -346,6 +346,43 @@ partial void ProcessAskTranscriptQuestionResponseContent( retryReason: global::System.String.Empty, cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false); } + // Missing query, transcript not yet processed, or the transcript was created with zero retention and its content has been purged + if ((int)__response.StatusCode == 400) + { + string? __content_400 = null; + global::System.Exception? __exception_400 = null; + global::ResembleAI.Error? __value_400 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_400 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_400 = global::ResembleAI.Error.FromJson(__content_400, JsonSerializerContext); + } + else + { + __content_400 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_400 = global::ResembleAI.Error.FromJson(__content_400, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_400 = __ex; + } + + + throw global::ResembleAI.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_400 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_400, + responseBody: __content_400, + responseObject: __value_400, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } if (__effectiveReadResponseAsString) { diff --git a/src/libs/ResembleAI/Generated/ResembleAI.SubpackageSpeechToTextClient.CreateTranscript.g.cs b/src/libs/ResembleAI/Generated/ResembleAI.SubpackageSpeechToTextClient.CreateTranscript.g.cs index 76fa7a2..ca38c30 100644 --- a/src/libs/ResembleAI/Generated/ResembleAI.SubpackageSpeechToTextClient.CreateTranscript.g.cs +++ b/src/libs/ResembleAI/Generated/ResembleAI.SubpackageSpeechToTextClient.CreateTranscript.g.cs @@ -192,6 +192,22 @@ request.Filename is null content: new global::System.Net.Http.StringContent(request.Query ?? string.Empty), name: "\"query\""); + } + if (request.CallbackUrl != default) + { + + __httpRequestContent.Add( + content: new global::System.Net.Http.StringContent(request.CallbackUrl ?? string.Empty), + name: "\"callback_url\""); + + } + if (request.ZeroRetentionMode != default) + { + + __httpRequestContent.Add( + content: new global::System.Net.Http.StringContent((global::System.Convert.ToString(request.ZeroRetentionMode, global::System.Globalization.CultureInfo.InvariantCulture) ?? string.Empty).ToLowerInvariant()), + name: "\"zero_retention_mode\""); + } __httpRequest.Content = __httpRequestContent; @@ -386,7 +402,7 @@ request.Filename is null retryReason: global::System.String.Empty, cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false); } - // Bad request + // Bad request (missing input, invalid callback_url, or zero retention requested without a callback_url) if ((int)__response.StatusCode == 400) { string? __content_400 = null; @@ -423,6 +439,43 @@ request.Filename is null h => h.Key, h => h.Value)); } + // Zero retention is not included in the team's plan or subscription + if ((int)__response.StatusCode == 402) + { + string? __content_402 = null; + global::System.Exception? __exception_402 = null; + global::ResembleAI.Error? __value_402 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_402 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_402 = global::ResembleAI.Error.FromJson(__content_402, JsonSerializerContext); + } + else + { + __content_402 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_402 = global::ResembleAI.Error.FromJson(__content_402, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_402 = __ex; + } + + + throw global::ResembleAI.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_402 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_402, + responseBody: __content_402, + responseObject: __value_402, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } if (__effectiveReadResponseAsString) { @@ -532,6 +585,13 @@ request.Filename is null /// /// Optional intelligence question to evaluate after transcription /// + /// + /// Public HTTPS URL that receives a POST with the result when processing finishes. Private, loopback, link-local, and non-HTTPS URLs are rejected. Required when zero_retention_mode is true. + /// + /// + /// Enable zero retention. The uploaded media and any temporary processing copies are permanently deleted after transcription, and the transcript content is purged after one delivery to callback_url (which is mandatory in this mode). privacy_mode is accepted as an alias. Plan feature — requests are rejected with 402 if not included in your plan.
+ /// Default Value: false + /// /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering. /// The token to cancel the operation with /// @@ -539,6 +599,8 @@ request.Filename is null byte[]? file = default, string? filename = default, string? query = default, + string? callbackUrl = default, + bool? zeroRetentionMode = default, global::ResembleAI.AutoSDKRequestOptions? requestOptions = default, global::System.Threading.CancellationToken cancellationToken = default) { @@ -547,6 +609,8 @@ request.Filename is null File = file, Filename = filename, Query = query, + CallbackUrl = callbackUrl, + ZeroRetentionMode = zeroRetentionMode, }; return await CreateTranscriptAsync( diff --git a/src/libs/ResembleAI/openapi.yaml b/src/libs/ResembleAI/openapi.yaml index 36d1052..5cc5e4f 100644 --- a/src/libs/ResembleAI/openapi.yaml +++ b/src/libs/ResembleAI/openapi.yaml @@ -298,7 +298,17 @@ } }, "400": { - "description": "Bad request", + "description": "Bad request (missing input, invalid callback_url, or zero retention requested without a callback_url)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "402": { + "description": "Zero retention is not included in the team's plan or subscription", "content": { "application/json": { "schema": { @@ -322,6 +332,16 @@ "query": { "type": "string", "description": "Optional intelligence question to evaluate after transcription" + }, + "callback_url": { + "type": "string", + "format": "uri", + "description": "Public HTTPS URL that receives a POST with the result when processing finishes. Private, loopback, link-local, and non-HTTPS URLs are rejected. Required when zero_retention_mode is true." + }, + "zero_retention_mode": { + "type": "boolean", + "default": false, + "description": "Enable zero retention. The uploaded media and any temporary processing copies are permanently deleted after transcription, and the transcript content is purged after one delivery to callback_url (which is mandatory in this mode). privacy_mode is accepted as an alias. Plan feature — requests are rejected with 402 if not included in your plan." } } } @@ -420,6 +440,16 @@ } } } + }, + "400": { + "description": "Missing query, transcript not yet processed, or the transcript was created with zero retention and its content has been purged", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } } }, "requestBody": { @@ -6800,6 +6830,10 @@ "status": { "$ref": "#/components/schemas/SpeechToTextPostResponsesContentApplicationJsonSchemaItemStatus" }, + "privacy_mode": { + "type": "boolean", + "description": "Whether the transcript was created with zero retention" + }, "created_at": { "type": "string", "format": "date-time" @@ -6864,7 +6898,8 @@ "$ref": "#/components/schemas/SpeechToTextUuidGetResponsesContentApplicationJsonSchemaItemStatus" }, "text": { - "type": "string" + "type": "string", + "description": "Absent for zero-retention transcripts after the content purge" }, "words": { "type": "array", @@ -6878,7 +6913,8 @@ }, "file_url": { "type": "string", - "format": "uri" + "format": "uri", + "description": "Absent once the media has been deleted (zero retention)" }, "query": { "type": "string" @@ -6886,6 +6922,20 @@ "answer": { "type": "string" }, + "privacy_mode": { + "type": "boolean", + "description": "Whether the transcript was created with zero retention" + }, + "file_deleted_at": { + "type": "string", + "format": "date-time", + "description": "When the uploaded media was permanently deleted (zero retention)" + }, + "content_deleted_at": { + "type": "string", + "format": "date-time", + "description": "When the transcript content was permanently purged (zero retention)" + }, "created_at": { "type": "string", "format": "date-time"