diff --git a/src/libs/Descript/Generated/Descript.ApiEndpointsClient.ExportTranscript.g.cs b/src/libs/Descript/Generated/Descript.ApiEndpointsClient.ExportTranscript.g.cs
new file mode 100644
index 0000000..095e6ce
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.ApiEndpointsClient.ExportTranscript.g.cs
@@ -0,0 +1,655 @@
+
+#nullable enable
+
+namespace Descript
+{
+ public partial class ApiEndpointsClient
+ {
+
+
+ private static readonly global::Descript.EndPointSecurityRequirement s_ExportTranscriptSecurityRequirement0 =
+ new global::Descript.EndPointSecurityRequirement
+ {
+ Authorizations = new global::Descript.EndPointAuthorizationRequirement[]
+ { new global::Descript.EndPointAuthorizationRequirement
+ {
+ Type = "Http",
+ SchemeId = "HttpBearer",
+ Location = "Header",
+ Name = "Bearer",
+ FriendlyName = "Bearer",
+ },
+ },
+ };
+ private static readonly global::Descript.EndPointSecurityRequirement[] s_ExportTranscriptSecurityRequirements =
+ new global::Descript.EndPointSecurityRequirement[]
+ { s_ExportTranscriptSecurityRequirement0,
+ };
+ partial void PrepareExportTranscriptArguments(
+ global::System.Net.Http.HttpClient httpClient,
+ global::Descript.ExportTranscriptRequest request);
+ partial void PrepareExportTranscriptRequest(
+ global::System.Net.Http.HttpClient httpClient,
+ global::System.Net.Http.HttpRequestMessage httpRequestMessage,
+ global::Descript.ExportTranscriptRequest request);
+ partial void ProcessExportTranscriptResponse(
+ global::System.Net.Http.HttpClient httpClient,
+ global::System.Net.Http.HttpResponseMessage httpResponseMessage);
+
+ partial void ProcessExportTranscriptResponseContent(
+ global::System.Net.Http.HttpClient httpClient,
+ global::System.Net.Http.HttpResponseMessage httpResponseMessage,
+ ref string content);
+
+ ///
+ /// Export project transcript
+ /// Export the transcript from a project composition.
+ /// Supports plain text, Markdown, HTML, RTF, and DOCX formats.
+ /// Options include speaker labels, timecodes, and markers.
+ /// The response body is the raw transcript file (binary for `docx`,
+ /// text otherwise) with a `Content-Disposition: attachment` header and
+ /// an `X-Composition-Id` header identifying the exported composition.
+ ///
+ ///
+ /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering.
+ /// The token to cancel the operation with
+ ///
+ public async global::System.Threading.Tasks.Task ExportTranscriptAsync(
+
+ global::Descript.ExportTranscriptRequest request,
+ global::Descript.AutoSDKRequestOptions? requestOptions = default,
+ global::System.Threading.CancellationToken cancellationToken = default)
+ {
+ var __response = await ExportTranscriptAsResponseAsync(
+
+ request: request,
+ requestOptions: requestOptions,
+ cancellationToken: cancellationToken
+ ).ConfigureAwait(false);
+
+ return __response.Body;
+ }
+ ///
+ /// Export project transcript
+ /// Export the transcript from a project composition.
+ /// Supports plain text, Markdown, HTML, RTF, and DOCX formats.
+ /// Options include speaker labels, timecodes, and markers.
+ /// The response body is the raw transcript file (binary for `docx`,
+ /// text otherwise) with a `Content-Disposition: attachment` header and
+ /// an `X-Composition-Id` header identifying the exported composition.
+ ///
+ ///
+ /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering.
+ /// The token to cancel the operation with
+ ///
+ public async global::System.Threading.Tasks.Task> ExportTranscriptAsResponseAsync(
+
+ global::Descript.ExportTranscriptRequest request,
+ global::Descript.AutoSDKRequestOptions? requestOptions = default,
+ global::System.Threading.CancellationToken cancellationToken = default)
+ {
+ request = request ?? throw new global::System.ArgumentNullException(nameof(request));
+
+ PrepareArguments(
+ client: HttpClient);
+ PrepareExportTranscriptArguments(
+ httpClient: HttpClient,
+ request: request);
+
+
+ var __authorizations = global::Descript.EndPointSecurityResolver.ResolveAuthorizations(
+ availableAuthorizations: Authorizations,
+ securityRequirements: s_ExportTranscriptSecurityRequirements,
+ operationName: "ExportTranscriptAsync");
+
+ using var __timeoutCancellationTokenSource = global::Descript.AutoSDKRequestOptionsSupport.CreateTimeoutCancellationTokenSource(
+ clientOptions: Options,
+ requestOptions: requestOptions,
+ cancellationToken: cancellationToken);
+ var __effectiveCancellationToken = __timeoutCancellationTokenSource?.Token ?? cancellationToken;
+ var __effectiveReadResponseAsString = global::Descript.AutoSDKRequestOptionsSupport.GetReadResponseAsString(
+ clientOptions: Options,
+ requestOptions: requestOptions,
+ fallbackValue: ReadResponseAsString);
+ var __maxAttempts = global::Descript.AutoSDKRequestOptionsSupport.GetMaxAttempts(
+ clientOptions: Options,
+ requestOptions: requestOptions,
+ supportsRetry: true);
+
+ global::System.Net.Http.HttpRequestMessage __CreateHttpRequest()
+ {
+
+ var __pathBuilder = new global::Descript.PathBuilder(
+ path: "/export/transcript",
+ baseUri: HttpClient.BaseAddress);
+ var __path = __pathBuilder.ToString();
+ __path = global::Descript.AutoSDKRequestOptionsSupport.AppendQueryParameters(
+ path: __path,
+ clientParameters: Options.QueryParameters,
+ requestParameters: requestOptions?.QueryParameters);
+ var __httpRequest = new global::System.Net.Http.HttpRequestMessage(
+ method: global::System.Net.Http.HttpMethod.Post,
+ requestUri: new global::System.Uri(__path, global::System.UriKind.RelativeOrAbsolute));
+#if NET6_0_OR_GREATER
+ __httpRequest.Version = global::System.Net.HttpVersion.Version11;
+ __httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher;
+#endif
+
+ foreach (var __authorization in __authorizations)
+ {
+ if (__authorization.Type == "Http" ||
+ __authorization.Type == "OAuth2" ||
+ __authorization.Type == "OpenIdConnect")
+ {
+ __httpRequest.Headers.Authorization = new global::System.Net.Http.Headers.AuthenticationHeaderValue(
+ scheme: __authorization.Name,
+ parameter: __authorization.Value);
+ }
+ else if (__authorization.Type == "ApiKey" &&
+ __authorization.Location == "Header")
+ {
+ __httpRequest.Headers.Add(__authorization.Name, __authorization.Value);
+ }
+ }
+ var __httpRequestContentBody = request.ToJson(JsonSerializerContext);
+ var __httpRequestContent = new global::System.Net.Http.StringContent(
+ content: __httpRequestContentBody,
+ encoding: global::System.Text.Encoding.UTF8,
+ mediaType: "application/json");
+ __httpRequest.Content = __httpRequestContent;
+ global::Descript.AutoSDKRequestOptionsSupport.ApplyHeaders(
+ request: __httpRequest,
+ clientHeaders: Options.Headers,
+ requestHeaders: requestOptions?.Headers);
+
+ PrepareRequest(
+ client: HttpClient,
+ request: __httpRequest);
+ PrepareExportTranscriptRequest(
+ httpClient: HttpClient,
+ httpRequestMessage: __httpRequest,
+ request: request);
+
+ return __httpRequest;
+ }
+
+ global::System.Net.Http.HttpRequestMessage? __httpRequest = null;
+ global::System.Net.Http.HttpResponseMessage? __response = null;
+ var __attemptNumber = 0;
+ try
+ {
+ for (var __attempt = 1; __attempt <= __maxAttempts; __attempt++)
+ {
+ __attemptNumber = __attempt;
+ __httpRequest = __CreateHttpRequest();
+ await global::Descript.AutoSDKRequestOptionsSupport.OnBeforeRequestAsync(
+ clientOptions: Options,
+ context: global::Descript.AutoSDKRequestOptionsSupport.CreateHookContext(
+ operationId: "ExportTranscript",
+ methodName: "ExportTranscriptAsync",
+ pathTemplate: "\"/export/transcript\"",
+ httpMethod: "POST",
+ baseUri: BaseUri,
+ request: __httpRequest!,
+ response: null,
+ exception: null,
+ clientOptions: Options,
+ requestOptions: requestOptions,
+ attempt: __attempt,
+ maxAttempts: __maxAttempts,
+ willRetry: false,
+ retryDelay: null,
+ retryReason: global::System.String.Empty,
+ cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false);
+ try
+ {
+ __response = await HttpClient.SendAsync(
+ request: __httpRequest,
+ completionOption: global::System.Net.Http.HttpCompletionOption.ResponseContentRead,
+ cancellationToken: __effectiveCancellationToken).ConfigureAwait(false);
+ }
+ catch (global::System.Net.Http.HttpRequestException __exception)
+ {
+ var __retryDelay = global::Descript.AutoSDKRequestOptionsSupport.GetRetryDelay(
+ clientOptions: Options,
+ requestOptions: requestOptions,
+ response: null,
+ attempt: __attempt);
+ var __willRetry = __attempt < __maxAttempts && !__effectiveCancellationToken.IsCancellationRequested;
+ await global::Descript.AutoSDKRequestOptionsSupport.OnAfterErrorAsync(
+ clientOptions: Options,
+ context: global::Descript.AutoSDKRequestOptionsSupport.CreateHookContext(
+ operationId: "ExportTranscript",
+ methodName: "ExportTranscriptAsync",
+ pathTemplate: "\"/export/transcript\"",
+ httpMethod: "POST",
+ baseUri: BaseUri,
+ request: __httpRequest!,
+ response: null,
+ exception: __exception,
+ clientOptions: Options,
+ requestOptions: requestOptions,
+ attempt: __attempt,
+ maxAttempts: __maxAttempts,
+ willRetry: __willRetry,
+ retryDelay: __willRetry ? __retryDelay : (global::System.TimeSpan?)null,
+ retryReason: "exception",
+ cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false);
+ if (!__willRetry)
+ {
+ throw;
+ }
+
+ __httpRequest.Dispose();
+ __httpRequest = null;
+ await global::Descript.AutoSDKRequestOptionsSupport.DelayBeforeRetryAsync(
+ retryDelay: __retryDelay,
+ cancellationToken: __effectiveCancellationToken).ConfigureAwait(false);
+ continue;
+ }
+
+ if (__response != null &&
+ __attempt < __maxAttempts &&
+ global::Descript.AutoSDKRequestOptionsSupport.ShouldRetryStatusCode(__response.StatusCode))
+ {
+ var __retryDelay = global::Descript.AutoSDKRequestOptionsSupport.GetRetryDelay(
+ clientOptions: Options,
+ requestOptions: requestOptions,
+ response: __response,
+ attempt: __attempt);
+ await global::Descript.AutoSDKRequestOptionsSupport.OnAfterErrorAsync(
+ clientOptions: Options,
+ context: global::Descript.AutoSDKRequestOptionsSupport.CreateHookContext(
+ operationId: "ExportTranscript",
+ methodName: "ExportTranscriptAsync",
+ pathTemplate: "\"/export/transcript\"",
+ httpMethod: "POST",
+ baseUri: BaseUri,
+ request: __httpRequest!,
+ response: __response,
+ exception: null,
+ clientOptions: Options,
+ requestOptions: requestOptions,
+ attempt: __attempt,
+ maxAttempts: __maxAttempts,
+ willRetry: true,
+ retryDelay: __retryDelay,
+ retryReason: "status:" + ((int)__response.StatusCode).ToString(global::System.Globalization.CultureInfo.InvariantCulture),
+ cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false);
+ __response.Dispose();
+ __response = null;
+ __httpRequest.Dispose();
+ __httpRequest = null;
+ await global::Descript.AutoSDKRequestOptionsSupport.DelayBeforeRetryAsync(
+ retryDelay: __retryDelay,
+ cancellationToken: __effectiveCancellationToken).ConfigureAwait(false);
+ continue;
+ }
+
+ break;
+ }
+
+ if (__response == null)
+ {
+ throw new global::System.InvalidOperationException("No response received.");
+ }
+
+ using (__response)
+ {
+
+ ProcessResponse(
+ client: HttpClient,
+ response: __response);
+ ProcessExportTranscriptResponse(
+ httpClient: HttpClient,
+ httpResponseMessage: __response);
+ if (__response.IsSuccessStatusCode)
+ {
+ await global::Descript.AutoSDKRequestOptionsSupport.OnAfterSuccessAsync(
+ clientOptions: Options,
+ context: global::Descript.AutoSDKRequestOptionsSupport.CreateHookContext(
+ operationId: "ExportTranscript",
+ methodName: "ExportTranscriptAsync",
+ pathTemplate: "\"/export/transcript\"",
+ httpMethod: "POST",
+ baseUri: BaseUri,
+ request: __httpRequest!,
+ response: __response,
+ exception: null,
+ clientOptions: Options,
+ requestOptions: requestOptions,
+ attempt: __attemptNumber,
+ maxAttempts: __maxAttempts,
+ willRetry: false,
+ retryDelay: null,
+ retryReason: global::System.String.Empty,
+ cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false);
+ }
+ else
+ {
+ await global::Descript.AutoSDKRequestOptionsSupport.OnAfterErrorAsync(
+ clientOptions: Options,
+ context: global::Descript.AutoSDKRequestOptionsSupport.CreateHookContext(
+ operationId: "ExportTranscript",
+ methodName: "ExportTranscriptAsync",
+ pathTemplate: "\"/export/transcript\"",
+ httpMethod: "POST",
+ baseUri: BaseUri,
+ request: __httpRequest!,
+ response: __response,
+ exception: null,
+ clientOptions: Options,
+ requestOptions: requestOptions,
+ attempt: __attemptNumber,
+ maxAttempts: __maxAttempts,
+ willRetry: false,
+ retryDelay: null,
+ retryReason: global::System.String.Empty,
+ cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false);
+ }
+ // Invalid input
+ if ((int)__response.StatusCode == 400)
+ {
+ string? __content_400 = null;
+ global::System.Exception? __exception_400 = null;
+ global::Descript.Error400? __value_400 = null;
+ try
+ {
+ if (__effectiveReadResponseAsString)
+ {
+ __content_400 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false);
+ __value_400 = global::Descript.Error400.FromJson(__content_400, JsonSerializerContext);
+ }
+ else
+ {
+ __content_400 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false);
+
+ __value_400 = global::Descript.Error400.FromJson(__content_400, JsonSerializerContext);
+ }
+ }
+ catch (global::System.Exception __ex)
+ {
+ __exception_400 = __ex;
+ }
+
+
+ throw global::Descript.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));
+ }
+ // Unauthorized
+ if ((int)__response.StatusCode == 401)
+ {
+ string? __content_401 = null;
+ global::System.Exception? __exception_401 = null;
+ global::Descript.Error401? __value_401 = null;
+ try
+ {
+ if (__effectiveReadResponseAsString)
+ {
+ __content_401 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false);
+ __value_401 = global::Descript.Error401.FromJson(__content_401, JsonSerializerContext);
+ }
+ else
+ {
+ __content_401 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false);
+
+ __value_401 = global::Descript.Error401.FromJson(__content_401, JsonSerializerContext);
+ }
+ }
+ catch (global::System.Exception __ex)
+ {
+ __exception_401 = __ex;
+ }
+
+
+ throw global::Descript.ApiException.Create(
+ statusCode: __response.StatusCode,
+ message: __content_401 ?? __response.ReasonPhrase ?? string.Empty,
+ innerException: __exception_401,
+ responseBody: __content_401,
+ responseObject: __value_401,
+ responseHeaders: global::System.Linq.Enumerable.ToDictionary(
+ __response.Headers,
+ h => h.Key,
+ h => h.Value));
+ }
+ // Forbidden
+ if ((int)__response.StatusCode == 403)
+ {
+ string? __content_403 = null;
+ global::System.Exception? __exception_403 = null;
+ global::Descript.Error403? __value_403 = null;
+ try
+ {
+ if (__effectiveReadResponseAsString)
+ {
+ __content_403 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false);
+ __value_403 = global::Descript.Error403.FromJson(__content_403, JsonSerializerContext);
+ }
+ else
+ {
+ __content_403 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false);
+
+ __value_403 = global::Descript.Error403.FromJson(__content_403, JsonSerializerContext);
+ }
+ }
+ catch (global::System.Exception __ex)
+ {
+ __exception_403 = __ex;
+ }
+
+
+ throw global::Descript.ApiException.Create(
+ statusCode: __response.StatusCode,
+ message: __content_403 ?? __response.ReasonPhrase ?? string.Empty,
+ innerException: __exception_403,
+ responseBody: __content_403,
+ responseObject: __value_403,
+ responseHeaders: global::System.Linq.Enumerable.ToDictionary(
+ __response.Headers,
+ h => h.Key,
+ h => h.Value));
+ }
+ // Too many requests - rate limit exceeded. Use the `Retry-After` header to determine when to retry.
+ if ((int)__response.StatusCode == 429)
+ {
+ string? __content_429 = null;
+ global::System.Exception? __exception_429 = null;
+ global::Descript.Error429? __value_429 = null;
+ try
+ {
+ if (__effectiveReadResponseAsString)
+ {
+ __content_429 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false);
+ __value_429 = global::Descript.Error429.FromJson(__content_429, JsonSerializerContext);
+ }
+ else
+ {
+ __content_429 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false);
+
+ __value_429 = global::Descript.Error429.FromJson(__content_429, JsonSerializerContext);
+ }
+ }
+ catch (global::System.Exception __ex)
+ {
+ __exception_429 = __ex;
+ }
+
+
+ throw global::Descript.ApiException.Create(
+ statusCode: __response.StatusCode,
+ message: __content_429 ?? __response.ReasonPhrase ?? string.Empty,
+ innerException: __exception_429,
+ responseBody: __content_429,
+ responseObject: __value_429,
+ responseHeaders: global::System.Linq.Enumerable.ToDictionary(
+ __response.Headers,
+ h => h.Key,
+ h => h.Value));
+ }
+
+ if (__effectiveReadResponseAsString)
+ {
+ var __content = await __response.Content.ReadAsStringAsync(
+ #if NET5_0_OR_GREATER
+ __effectiveCancellationToken
+ #endif
+ ).ConfigureAwait(false);
+
+ ProcessResponseContent(
+ client: HttpClient,
+ response: __response,
+ content: ref __content);
+ ProcessExportTranscriptResponseContent(
+ httpClient: HttpClient,
+ httpResponseMessage: __response,
+ content: ref __content);
+
+ try
+ {
+ __response.EnsureSuccessStatusCode();
+
+ return new global::Descript.AutoSDKHttpResponse(
+ statusCode: __response.StatusCode,
+ headers: global::Descript.AutoSDKHttpResponse.CreateHeaders(__response),
+ requestUri: __response.RequestMessage?.RequestUri,
+ body: __content);
+ }
+ catch (global::System.Exception __ex)
+ {
+ throw global::Descript.ApiException.Create(
+ statusCode: __response.StatusCode,
+ message: __content ?? __response.ReasonPhrase ?? string.Empty,
+ innerException: __ex,
+ responseBody: __content,
+ responseHeaders: global::System.Linq.Enumerable.ToDictionary(
+ __response.Headers,
+ h => h.Key,
+ h => h.Value));
+ }
+ }
+ else
+ {
+ try
+ {
+ __response.EnsureSuccessStatusCode();
+ var __content = await __response.Content.ReadAsStringAsync(
+ #if NET5_0_OR_GREATER
+ __effectiveCancellationToken
+ #endif
+ ).ConfigureAwait(false);
+
+ return new global::Descript.AutoSDKHttpResponse(
+ statusCode: __response.StatusCode,
+ headers: global::Descript.AutoSDKHttpResponse.CreateHeaders(__response),
+ requestUri: __response.RequestMessage?.RequestUri,
+ body: __content);
+ }
+ catch (global::System.Exception __ex)
+ {
+ string? __content = null;
+ try
+ {
+ __content = await __response.Content.ReadAsStringAsync(
+ #if NET5_0_OR_GREATER
+ __effectiveCancellationToken
+ #endif
+ ).ConfigureAwait(false);
+ }
+ catch (global::System.Exception)
+ {
+ }
+
+ throw global::Descript.ApiException.Create(
+ statusCode: __response.StatusCode,
+ message: __content ?? __response.ReasonPhrase ?? string.Empty,
+ innerException: __ex,
+ responseBody: __content,
+ responseHeaders: global::System.Linq.Enumerable.ToDictionary(
+ __response.Headers,
+ h => h.Key,
+ h => h.Value));
+ }
+ }
+
+ }
+ }
+ finally
+ {
+ __httpRequest?.Dispose();
+ }
+ }
+ ///
+ /// Export project transcript
+ /// Export the transcript from a project composition.
+ /// Supports plain text, Markdown, HTML, RTF, and DOCX formats.
+ /// Options include speaker labels, timecodes, and markers.
+ /// The response body is the raw transcript file (binary for `docx`,
+ /// text otherwise) with a `Content-Disposition: attachment` header and
+ /// an `X-Composition-Id` header identifying the exported composition.
+ ///
+ ///
+ /// The ID of the project to export from.
+ /// Example: 9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb
+ ///
+ ///
+ /// The ID of the composition to export. Defaults to the first composition.
+ /// Example: 39677a40-1c43-4c36-8449-46cfbc4de2b5
+ ///
+ ///
+ /// Transcript file format. For `docx`, the response `content` field
+ /// contains the base64-encoded binary file.
+ ///
+ ///
+ /// Speaker label mode.
+ /// - `off`: No speaker labels
+ /// - `changes`: Show speaker label when the speaker changes
+ /// - `every_paragraph`: Show speaker label on every paragraph
+ /// Default Value: changes
+ ///
+ ///
+ /// Include markers in the transcript.
+ /// Default Value: false
+ ///
+ ///
+ /// Timecode options. When provided, timecodes are included in
+ /// the output.
+ ///
+ /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering.
+ /// The token to cancel the operation with
+ ///
+ public async global::System.Threading.Tasks.Task ExportTranscriptAsync(
+ global::System.Guid projectId,
+ global::Descript.ExportTranscriptRequestFormat format,
+ global::System.Guid? compositionId = default,
+ global::Descript.ExportTranscriptRequestIncludeSpeakerLabels? includeSpeakerLabels = default,
+ bool? includeMarkers = default,
+ global::Descript.ExportTranscriptRequestTimecodes? timecodes = default,
+ global::Descript.AutoSDKRequestOptions? requestOptions = default,
+ global::System.Threading.CancellationToken cancellationToken = default)
+ {
+ var __request = new global::Descript.ExportTranscriptRequest
+ {
+ ProjectId = projectId,
+ CompositionId = compositionId,
+ Format = format,
+ IncludeSpeakerLabels = includeSpeakerLabels,
+ IncludeMarkers = includeMarkers,
+ Timecodes = timecodes,
+ };
+
+ return await ExportTranscriptAsync(
+ request: __request,
+ requestOptions: requestOptions,
+ cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/libs/Descript/Generated/Descript.IApiEndpointsClient.ExportTranscript.g.cs b/src/libs/Descript/Generated/Descript.IApiEndpointsClient.ExportTranscript.g.cs
new file mode 100644
index 0000000..c895bfe
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.IApiEndpointsClient.ExportTranscript.g.cs
@@ -0,0 +1,92 @@
+#nullable enable
+
+namespace Descript
+{
+ public partial interface IApiEndpointsClient
+ {
+ ///
+ /// Export project transcript
+ /// Export the transcript from a project composition.
+ /// Supports plain text, Markdown, HTML, RTF, and DOCX formats.
+ /// Options include speaker labels, timecodes, and markers.
+ /// The response body is the raw transcript file (binary for `docx`,
+ /// text otherwise) with a `Content-Disposition: attachment` header and
+ /// an `X-Composition-Id` header identifying the exported composition.
+ ///
+ ///
+ /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering.
+ /// The token to cancel the operation with
+ ///
+ global::System.Threading.Tasks.Task ExportTranscriptAsync(
+
+ global::Descript.ExportTranscriptRequest request,
+ global::Descript.AutoSDKRequestOptions? requestOptions = default,
+ global::System.Threading.CancellationToken cancellationToken = default);
+ ///
+ /// Export project transcript
+ /// Export the transcript from a project composition.
+ /// Supports plain text, Markdown, HTML, RTF, and DOCX formats.
+ /// Options include speaker labels, timecodes, and markers.
+ /// The response body is the raw transcript file (binary for `docx`,
+ /// text otherwise) with a `Content-Disposition: attachment` header and
+ /// an `X-Composition-Id` header identifying the exported composition.
+ ///
+ ///
+ /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering.
+ /// The token to cancel the operation with
+ ///
+ global::System.Threading.Tasks.Task> ExportTranscriptAsResponseAsync(
+
+ global::Descript.ExportTranscriptRequest request,
+ global::Descript.AutoSDKRequestOptions? requestOptions = default,
+ global::System.Threading.CancellationToken cancellationToken = default);
+ ///
+ /// Export project transcript
+ /// Export the transcript from a project composition.
+ /// Supports plain text, Markdown, HTML, RTF, and DOCX formats.
+ /// Options include speaker labels, timecodes, and markers.
+ /// The response body is the raw transcript file (binary for `docx`,
+ /// text otherwise) with a `Content-Disposition: attachment` header and
+ /// an `X-Composition-Id` header identifying the exported composition.
+ ///
+ ///
+ /// The ID of the project to export from.
+ /// Example: 9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb
+ ///
+ ///
+ /// The ID of the composition to export. Defaults to the first composition.
+ /// Example: 39677a40-1c43-4c36-8449-46cfbc4de2b5
+ ///
+ ///
+ /// Transcript file format. For `docx`, the response `content` field
+ /// contains the base64-encoded binary file.
+ ///
+ ///
+ /// Speaker label mode.
+ /// - `off`: No speaker labels
+ /// - `changes`: Show speaker label when the speaker changes
+ /// - `every_paragraph`: Show speaker label on every paragraph
+ /// Default Value: changes
+ ///
+ ///
+ /// Include markers in the transcript.
+ /// Default Value: false
+ ///
+ ///
+ /// Timecode options. When provided, timecodes are included in
+ /// the output.
+ ///
+ /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering.
+ /// The token to cancel the operation with
+ ///
+ global::System.Threading.Tasks.Task ExportTranscriptAsync(
+ global::System.Guid projectId,
+ global::Descript.ExportTranscriptRequestFormat format,
+ global::System.Guid? compositionId = default,
+ global::Descript.ExportTranscriptRequestIncludeSpeakerLabels? includeSpeakerLabels = default,
+ bool? includeMarkers = default,
+ global::Descript.ExportTranscriptRequestTimecodes? timecodes = default,
+ global::Descript.AutoSDKRequestOptions? requestOptions = default,
+ global::System.Threading.CancellationToken cancellationToken = default);
+ }
+}
\ No newline at end of file
diff --git a/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestFormat.g.cs b/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestFormat.g.cs
new file mode 100644
index 0000000..47950d7
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestFormat.g.cs
@@ -0,0 +1,53 @@
+#nullable enable
+
+namespace Descript.JsonConverters
+{
+ ///
+ public sealed class ExportTranscriptRequestFormatJsonConverter : global::System.Text.Json.Serialization.JsonConverter
+ {
+ ///
+ public override global::Descript.ExportTranscriptRequestFormat Read(
+ ref global::System.Text.Json.Utf8JsonReader reader,
+ global::System.Type typeToConvert,
+ global::System.Text.Json.JsonSerializerOptions options)
+ {
+ switch (reader.TokenType)
+ {
+ case global::System.Text.Json.JsonTokenType.String:
+ {
+ var stringValue = reader.GetString();
+ if (stringValue != null)
+ {
+ return global::Descript.ExportTranscriptRequestFormatExtensions.ToEnum(stringValue) ?? default;
+ }
+
+ break;
+ }
+ case global::System.Text.Json.JsonTokenType.Number:
+ {
+ var numValue = reader.GetInt32();
+ return (global::Descript.ExportTranscriptRequestFormat)numValue;
+ }
+ case global::System.Text.Json.JsonTokenType.Null:
+ {
+ return default(global::Descript.ExportTranscriptRequestFormat);
+ }
+ default:
+ throw new global::System.ArgumentOutOfRangeException(nameof(reader));
+ }
+
+ return default;
+ }
+
+ ///
+ public override void Write(
+ global::System.Text.Json.Utf8JsonWriter writer,
+ global::Descript.ExportTranscriptRequestFormat value,
+ global::System.Text.Json.JsonSerializerOptions options)
+ {
+ writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer));
+
+ writer.WriteStringValue(global::Descript.ExportTranscriptRequestFormatExtensions.ToValueString(value));
+ }
+ }
+}
diff --git a/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestFormatNullable.g.cs b/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestFormatNullable.g.cs
new file mode 100644
index 0000000..dae3a11
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestFormatNullable.g.cs
@@ -0,0 +1,60 @@
+#nullable enable
+
+namespace Descript.JsonConverters
+{
+ ///
+ public sealed class ExportTranscriptRequestFormatNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter
+ {
+ ///
+ public override global::Descript.ExportTranscriptRequestFormat? Read(
+ ref global::System.Text.Json.Utf8JsonReader reader,
+ global::System.Type typeToConvert,
+ global::System.Text.Json.JsonSerializerOptions options)
+ {
+ switch (reader.TokenType)
+ {
+ case global::System.Text.Json.JsonTokenType.String:
+ {
+ var stringValue = reader.GetString();
+ if (stringValue != null)
+ {
+ return global::Descript.ExportTranscriptRequestFormatExtensions.ToEnum(stringValue);
+ }
+
+ break;
+ }
+ case global::System.Text.Json.JsonTokenType.Number:
+ {
+ var numValue = reader.GetInt32();
+ return (global::Descript.ExportTranscriptRequestFormat)numValue;
+ }
+ case global::System.Text.Json.JsonTokenType.Null:
+ {
+ return default(global::Descript.ExportTranscriptRequestFormat?);
+ }
+ default:
+ throw new global::System.ArgumentOutOfRangeException(nameof(reader));
+ }
+
+ return default;
+ }
+
+ ///
+ public override void Write(
+ global::System.Text.Json.Utf8JsonWriter writer,
+ global::Descript.ExportTranscriptRequestFormat? value,
+ global::System.Text.Json.JsonSerializerOptions options)
+ {
+ writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer));
+
+ if (value == null)
+ {
+ writer.WriteNullValue();
+ }
+ else
+ {
+ writer.WriteStringValue(global::Descript.ExportTranscriptRequestFormatExtensions.ToValueString(value.Value));
+ }
+ }
+ }
+}
diff --git a/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestIncludeSpeakerLabels.g.cs b/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestIncludeSpeakerLabels.g.cs
new file mode 100644
index 0000000..fe1e94f
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestIncludeSpeakerLabels.g.cs
@@ -0,0 +1,53 @@
+#nullable enable
+
+namespace Descript.JsonConverters
+{
+ ///
+ public sealed class ExportTranscriptRequestIncludeSpeakerLabelsJsonConverter : global::System.Text.Json.Serialization.JsonConverter
+ {
+ ///
+ public override global::Descript.ExportTranscriptRequestIncludeSpeakerLabels Read(
+ ref global::System.Text.Json.Utf8JsonReader reader,
+ global::System.Type typeToConvert,
+ global::System.Text.Json.JsonSerializerOptions options)
+ {
+ switch (reader.TokenType)
+ {
+ case global::System.Text.Json.JsonTokenType.String:
+ {
+ var stringValue = reader.GetString();
+ if (stringValue != null)
+ {
+ return global::Descript.ExportTranscriptRequestIncludeSpeakerLabelsExtensions.ToEnum(stringValue) ?? default;
+ }
+
+ break;
+ }
+ case global::System.Text.Json.JsonTokenType.Number:
+ {
+ var numValue = reader.GetInt32();
+ return (global::Descript.ExportTranscriptRequestIncludeSpeakerLabels)numValue;
+ }
+ case global::System.Text.Json.JsonTokenType.Null:
+ {
+ return default(global::Descript.ExportTranscriptRequestIncludeSpeakerLabels);
+ }
+ default:
+ throw new global::System.ArgumentOutOfRangeException(nameof(reader));
+ }
+
+ return default;
+ }
+
+ ///
+ public override void Write(
+ global::System.Text.Json.Utf8JsonWriter writer,
+ global::Descript.ExportTranscriptRequestIncludeSpeakerLabels value,
+ global::System.Text.Json.JsonSerializerOptions options)
+ {
+ writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer));
+
+ writer.WriteStringValue(global::Descript.ExportTranscriptRequestIncludeSpeakerLabelsExtensions.ToValueString(value));
+ }
+ }
+}
diff --git a/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestIncludeSpeakerLabelsNullable.g.cs b/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestIncludeSpeakerLabelsNullable.g.cs
new file mode 100644
index 0000000..96496b3
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.JsonConverters.ExportTranscriptRequestIncludeSpeakerLabelsNullable.g.cs
@@ -0,0 +1,60 @@
+#nullable enable
+
+namespace Descript.JsonConverters
+{
+ ///
+ public sealed class ExportTranscriptRequestIncludeSpeakerLabelsNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter
+ {
+ ///
+ public override global::Descript.ExportTranscriptRequestIncludeSpeakerLabels? Read(
+ ref global::System.Text.Json.Utf8JsonReader reader,
+ global::System.Type typeToConvert,
+ global::System.Text.Json.JsonSerializerOptions options)
+ {
+ switch (reader.TokenType)
+ {
+ case global::System.Text.Json.JsonTokenType.String:
+ {
+ var stringValue = reader.GetString();
+ if (stringValue != null)
+ {
+ return global::Descript.ExportTranscriptRequestIncludeSpeakerLabelsExtensions.ToEnum(stringValue);
+ }
+
+ break;
+ }
+ case global::System.Text.Json.JsonTokenType.Number:
+ {
+ var numValue = reader.GetInt32();
+ return (global::Descript.ExportTranscriptRequestIncludeSpeakerLabels)numValue;
+ }
+ case global::System.Text.Json.JsonTokenType.Null:
+ {
+ return default(global::Descript.ExportTranscriptRequestIncludeSpeakerLabels?);
+ }
+ default:
+ throw new global::System.ArgumentOutOfRangeException(nameof(reader));
+ }
+
+ return default;
+ }
+
+ ///
+ public override void Write(
+ global::System.Text.Json.Utf8JsonWriter writer,
+ global::Descript.ExportTranscriptRequestIncludeSpeakerLabels? value,
+ global::System.Text.Json.JsonSerializerOptions options)
+ {
+ writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer));
+
+ if (value == null)
+ {
+ writer.WriteNullValue();
+ }
+ else
+ {
+ writer.WriteStringValue(global::Descript.ExportTranscriptRequestIncludeSpeakerLabelsExtensions.ToValueString(value.Value));
+ }
+ }
+ }
+}
diff --git a/src/libs/Descript/Generated/Descript.JsonSerializerContext.g.cs b/src/libs/Descript/Generated/Descript.JsonSerializerContext.g.cs
index 48801e1..33d4db4 100644
--- a/src/libs/Descript/Generated/Descript.JsonSerializerContext.g.cs
+++ b/src/libs/Descript/Generated/Descript.JsonSerializerContext.g.cs
@@ -129,6 +129,14 @@ namespace Descript
typeof(global::Descript.JsonConverters.PublishJobRequestAccessLevelNullableJsonConverter),
+ typeof(global::Descript.JsonConverters.ExportTranscriptRequestFormatJsonConverter),
+
+ typeof(global::Descript.JsonConverters.ExportTranscriptRequestFormatNullableJsonConverter),
+
+ typeof(global::Descript.JsonConverters.ExportTranscriptRequestIncludeSpeakerLabelsJsonConverter),
+
+ typeof(global::Descript.JsonConverters.ExportTranscriptRequestIncludeSpeakerLabelsNullableJsonConverter),
+
typeof(global::Descript.JsonConverters.ListJobsTypeJsonConverter),
typeof(global::Descript.JsonConverters.ListJobsTypeNullableJsonConverter),
@@ -255,6 +263,10 @@ namespace Descript
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.PublishJobRequestMediaType), TypeInfoPropertyName = "PublishJobRequestMediaType2")]
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.PublishJobRequestResolution), TypeInfoPropertyName = "PublishJobRequestResolution2")]
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.PublishJobRequestAccessLevel), TypeInfoPropertyName = "PublishJobRequestAccessLevel2")]
+ [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.ExportTranscriptRequest))]
+ [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.ExportTranscriptRequestFormat), TypeInfoPropertyName = "ExportTranscriptRequestFormat2")]
+ [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.ExportTranscriptRequestIncludeSpeakerLabels), TypeInfoPropertyName = "ExportTranscriptRequestIncludeSpeakerLabels2")]
+ [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.ExportTranscriptRequestTimecodes))]
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.ListJobsType), TypeInfoPropertyName = "ListJobsType2")]
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.ListProjectsSort), TypeInfoPropertyName = "ListProjectsSort2")]
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.ListProjectsDirection), TypeInfoPropertyName = "ListProjectsDirection2")]
@@ -263,6 +275,7 @@ namespace Descript
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.ImportProjectMediaResponseUploadUrls2))]
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.AgentEditJobResponse))]
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.PublishJobResponse))]
+ [global::System.Text.Json.Serialization.JsonSerializable(typeof(byte[]))]
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.ListJobsResponse))]
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))]
[global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Descript.ListJobsResponsePagination))]
diff --git a/src/libs/Descript/Generated/Descript.JsonSerializerContextTypes.g.cs b/src/libs/Descript/Generated/Descript.JsonSerializerContextTypes.g.cs
index 6ee0a3b..bd6d906 100644
--- a/src/libs/Descript/Generated/Descript.JsonSerializerContextTypes.g.cs
+++ b/src/libs/Descript/Generated/Descript.JsonSerializerContextTypes.g.cs
@@ -392,95 +392,115 @@ public sealed partial class JsonSerializerContextTypes
///
///
///
- public global::Descript.ListJobsType? Type91 { get; set; }
+ public global::Descript.ExportTranscriptRequest? Type91 { get; set; }
///
///
///
- public global::Descript.ListProjectsSort? Type92 { get; set; }
+ public global::Descript.ExportTranscriptRequestFormat? Type92 { get; set; }
///
///
///
- public global::Descript.ListProjectsDirection? Type93 { get; set; }
+ public global::Descript.ExportTranscriptRequestIncludeSpeakerLabels? Type93 { get; set; }
///
///
///
- public global::Descript.ImportProjectMediaResponse? Type94 { get; set; }
+ public global::Descript.ExportTranscriptRequestTimecodes? Type94 { get; set; }
///
///
///
- public global::System.Collections.Generic.Dictionary? Type95 { get; set; }
+ public global::Descript.ListJobsType? Type95 { get; set; }
///
///
///
- public global::Descript.ImportProjectMediaResponseUploadUrls2? Type96 { get; set; }
+ public global::Descript.ListProjectsSort? Type96 { get; set; }
///
///
///
- public global::Descript.AgentEditJobResponse? Type97 { get; set; }
+ public global::Descript.ListProjectsDirection? Type97 { get; set; }
///
///
///
- public global::Descript.PublishJobResponse? Type98 { get; set; }
+ public global::Descript.ImportProjectMediaResponse? Type98 { get; set; }
///
///
///
- public global::Descript.ListJobsResponse? Type99 { get; set; }
+ public global::System.Collections.Generic.Dictionary? Type99 { get; set; }
///
///
///
- public global::System.Collections.Generic.IList? Type100 { get; set; }
+ public global::Descript.ImportProjectMediaResponseUploadUrls2? Type100 { get; set; }
///
///
///
- public global::Descript.ListJobsResponsePagination? Type101 { get; set; }
+ public global::Descript.AgentEditJobResponse? Type101 { get; set; }
///
///
///
- public global::Descript.ListProjectsResponse? Type102 { get; set; }
+ public global::Descript.PublishJobResponse? Type102 { get; set; }
///
///
///
- public global::System.Collections.Generic.IList? Type103 { get; set; }
+ public byte[]? Type103 { get; set; }
///
///
///
- public global::Descript.ListProjectsResponseDataItem? Type104 { get; set; }
+ public global::Descript.ListJobsResponse? Type104 { get; set; }
///
///
///
- public global::Descript.ListProjectsResponsePagination? Type105 { get; set; }
+ public global::System.Collections.Generic.IList? Type105 { get; set; }
///
///
///
- public global::Descript.GetProjectResponse? Type106 { get; set; }
+ public global::Descript.ListJobsResponsePagination? Type106 { get; set; }
///
///
///
- public global::System.Collections.Generic.Dictionary? Type107 { get; set; }
+ public global::Descript.ListProjectsResponse? Type107 { get; set; }
///
///
///
- public global::Descript.GetProjectResponseMediaFiles2? Type108 { get; set; }
+ public global::System.Collections.Generic.IList? Type108 { get; set; }
///
///
///
- public global::Descript.GetProjectResponseMediaFilesType? Type109 { get; set; }
+ public global::Descript.ListProjectsResponseDataItem? Type109 { get; set; }
///
///
///
- public global::System.Collections.Generic.IList? Type110 { get; set; }
+ public global::Descript.ListProjectsResponsePagination? Type110 { get; set; }
///
///
///
- public global::Descript.GetProjectResponseComposition? Type111 { get; set; }
+ public global::Descript.GetProjectResponse? Type111 { get; set; }
///
///
///
- public global::Descript.GetStatusResponse? Type112 { get; set; }
+ public global::System.Collections.Generic.Dictionary? Type112 { get; set; }
///
///
///
- public global::Descript.GetStatusResponseStatus? Type113 { get; set; }
+ public global::Descript.GetProjectResponseMediaFiles2? Type113 { get; set; }
+ ///
+ ///
+ ///
+ public global::Descript.GetProjectResponseMediaFilesType? Type114 { get; set; }
+ ///
+ ///
+ ///
+ public global::System.Collections.Generic.IList? Type115 { get; set; }
+ ///
+ ///
+ ///
+ public global::Descript.GetProjectResponseComposition? Type116 { get; set; }
+ ///
+ ///
+ ///
+ public global::Descript.GetStatusResponse? Type117 { get; set; }
+ ///
+ ///
+ ///
+ public global::Descript.GetStatusResponseStatus? Type118 { get; set; }
///
///
diff --git a/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequest.Json.g.cs b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequest.Json.g.cs
new file mode 100644
index 0000000..5e3b683
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequest.Json.g.cs
@@ -0,0 +1,92 @@
+#nullable enable
+
+namespace Descript
+{
+ public sealed partial class ExportTranscriptRequest
+ {
+ ///
+ /// Serializes the current instance to a JSON string using the provided JsonSerializerContext.
+ ///
+ public string ToJson(
+ global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
+ {
+ return global::System.Text.Json.JsonSerializer.Serialize(
+ this,
+ this.GetType(),
+ jsonSerializerContext);
+ }
+
+ ///
+ /// Serializes the current instance to a JSON string using the provided JsonSerializerOptions.
+ ///
+#if NET8_0_OR_GREATER
+ [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
+ [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
+#endif
+ public string ToJson(
+ global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
+ {
+ return global::System.Text.Json.JsonSerializer.Serialize(
+ this,
+ jsonSerializerOptions);
+ }
+
+ ///
+ /// Deserializes a JSON string using the provided JsonSerializerContext.
+ ///
+ public static global::Descript.ExportTranscriptRequest? FromJson(
+ string json,
+ global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
+ {
+ return global::System.Text.Json.JsonSerializer.Deserialize(
+ json,
+ typeof(global::Descript.ExportTranscriptRequest),
+ jsonSerializerContext) as global::Descript.ExportTranscriptRequest;
+ }
+
+ ///
+ /// Deserializes a JSON string using the provided JsonSerializerOptions.
+ ///
+#if NET8_0_OR_GREATER
+ [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
+ [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
+#endif
+ public static global::Descript.ExportTranscriptRequest? FromJson(
+ string json,
+ global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
+ {
+ return global::System.Text.Json.JsonSerializer.Deserialize(
+ json,
+ jsonSerializerOptions);
+ }
+
+ ///
+ /// Deserializes a JSON stream using the provided JsonSerializerContext.
+ ///
+ public static async global::System.Threading.Tasks.ValueTask FromJsonStreamAsync(
+ global::System.IO.Stream jsonStream,
+ global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
+ {
+ return (await global::System.Text.Json.JsonSerializer.DeserializeAsync(
+ jsonStream,
+ typeof(global::Descript.ExportTranscriptRequest),
+ jsonSerializerContext).ConfigureAwait(false)) as global::Descript.ExportTranscriptRequest;
+ }
+
+ ///
+ /// Deserializes a JSON stream using the provided JsonSerializerOptions.
+ ///
+#if NET8_0_OR_GREATER
+ [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
+ [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
+#endif
+ public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync(
+ global::System.IO.Stream jsonStream,
+ global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
+ {
+ return global::System.Text.Json.JsonSerializer.DeserializeAsync(
+ jsonStream,
+ jsonSerializerOptions);
+ }
+ }
+}
diff --git a/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequest.g.cs b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequest.g.cs
new file mode 100644
index 0000000..b029b2b
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequest.g.cs
@@ -0,0 +1,125 @@
+
+#nullable enable
+
+namespace Descript
+{
+ ///
+ /// Request to export the transcript from a project composition.
+ ///
+ public sealed partial class ExportTranscriptRequest
+ {
+ ///
+ /// The ID of the project to export from.
+ /// Example: 9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb
+ ///
+ /// 9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb
+ [global::System.Text.Json.Serialization.JsonPropertyName("project_id")]
+ [global::System.Text.Json.Serialization.JsonRequired]
+ public required global::System.Guid ProjectId { get; set; }
+
+ ///
+ /// The ID of the composition to export. Defaults to the first composition.
+ /// Example: 39677a40-1c43-4c36-8449-46cfbc4de2b5
+ ///
+ /// 39677a40-1c43-4c36-8449-46cfbc4de2b5
+ [global::System.Text.Json.Serialization.JsonPropertyName("composition_id")]
+ public global::System.Guid? CompositionId { get; set; }
+
+ ///
+ /// Transcript file format. For `docx`, the response `content` field
+ /// contains the base64-encoded binary file.
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("format")]
+ [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Descript.JsonConverters.ExportTranscriptRequestFormatJsonConverter))]
+ [global::System.Text.Json.Serialization.JsonRequired]
+ public required global::Descript.ExportTranscriptRequestFormat Format { get; set; }
+
+ ///
+ /// Speaker label mode.
+ /// - `off`: No speaker labels
+ /// - `changes`: Show speaker label when the speaker changes
+ /// - `every_paragraph`: Show speaker label on every paragraph
+ /// Default Value: changes
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("include_speaker_labels")]
+ [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Descript.JsonConverters.ExportTranscriptRequestIncludeSpeakerLabelsJsonConverter))]
+ public global::Descript.ExportTranscriptRequestIncludeSpeakerLabels? IncludeSpeakerLabels { get; set; }
+
+ ///
+ /// Include markers in the transcript.
+ /// Default Value: false
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("include_markers")]
+ public bool? IncludeMarkers { get; set; }
+
+ ///
+ /// Timecode options. When provided, timecodes are included in
+ /// the output.
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("timecodes")]
+ public global::Descript.ExportTranscriptRequestTimecodes? Timecodes { get; set; }
+
+ ///
+ /// Additional properties that are not explicitly defined in the schema
+ ///
+ [global::System.Text.Json.Serialization.JsonExtensionData]
+ public global::System.Collections.Generic.IDictionary AdditionalProperties { get; set; } = new global::System.Collections.Generic.Dictionary();
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// The ID of the project to export from.
+ /// Example: 9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb
+ ///
+ ///
+ /// Transcript file format. For `docx`, the response `content` field
+ /// contains the base64-encoded binary file.
+ ///
+ ///
+ /// The ID of the composition to export. Defaults to the first composition.
+ /// Example: 39677a40-1c43-4c36-8449-46cfbc4de2b5
+ ///
+ ///
+ /// Speaker label mode.
+ /// - `off`: No speaker labels
+ /// - `changes`: Show speaker label when the speaker changes
+ /// - `every_paragraph`: Show speaker label on every paragraph
+ /// Default Value: changes
+ ///
+ ///
+ /// Include markers in the transcript.
+ /// Default Value: false
+ ///
+ ///
+ /// Timecode options. When provided, timecodes are included in
+ /// the output.
+ ///
+#if NET7_0_OR_GREATER
+ [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers]
+#endif
+ public ExportTranscriptRequest(
+ global::System.Guid projectId,
+ global::Descript.ExportTranscriptRequestFormat format,
+ global::System.Guid? compositionId,
+ global::Descript.ExportTranscriptRequestIncludeSpeakerLabels? includeSpeakerLabels,
+ bool? includeMarkers,
+ global::Descript.ExportTranscriptRequestTimecodes? timecodes)
+ {
+ this.ProjectId = projectId;
+ this.CompositionId = compositionId;
+ this.Format = format;
+ this.IncludeSpeakerLabels = includeSpeakerLabels;
+ this.IncludeMarkers = includeMarkers;
+ this.Timecodes = timecodes;
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public ExportTranscriptRequest()
+ {
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestFormat.g.cs b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestFormat.g.cs
new file mode 100644
index 0000000..f390f39
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestFormat.g.cs
@@ -0,0 +1,70 @@
+
+#nullable enable
+
+namespace Descript
+{
+ ///
+ /// Transcript file format. For `docx`, the response `content` field
+ /// contains the base64-encoded binary file.
+ ///
+ public enum ExportTranscriptRequestFormat
+ {
+ ///
+ ///
+ ///
+ Docx,
+ ///
+ ///
+ ///
+ Html,
+ ///
+ ///
+ ///
+ Markdown,
+ ///
+ ///
+ ///
+ Rtf,
+ ///
+ ///
+ ///
+ Txt,
+ }
+
+ ///
+ /// Enum extensions to do fast conversions without the reflection.
+ ///
+ public static class ExportTranscriptRequestFormatExtensions
+ {
+ ///
+ /// Converts an enum to a string.
+ ///
+ public static string ToValueString(this ExportTranscriptRequestFormat value)
+ {
+ return value switch
+ {
+ ExportTranscriptRequestFormat.Docx => "docx",
+ ExportTranscriptRequestFormat.Html => "html",
+ ExportTranscriptRequestFormat.Markdown => "markdown",
+ ExportTranscriptRequestFormat.Rtf => "rtf",
+ ExportTranscriptRequestFormat.Txt => "txt",
+ _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null),
+ };
+ }
+ ///
+ /// Converts an string to a enum.
+ ///
+ public static ExportTranscriptRequestFormat? ToEnum(string value)
+ {
+ return value switch
+ {
+ "docx" => ExportTranscriptRequestFormat.Docx,
+ "html" => ExportTranscriptRequestFormat.Html,
+ "markdown" => ExportTranscriptRequestFormat.Markdown,
+ "rtf" => ExportTranscriptRequestFormat.Rtf,
+ "txt" => ExportTranscriptRequestFormat.Txt,
+ _ => null,
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestIncludeSpeakerLabels.g.cs b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestIncludeSpeakerLabels.g.cs
new file mode 100644
index 0000000..dd34902
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestIncludeSpeakerLabels.g.cs
@@ -0,0 +1,61 @@
+
+#nullable enable
+
+namespace Descript
+{
+ ///
+ /// Speaker label mode.
+ /// - `off`: No speaker labels
+ /// - `changes`: Show speaker label when the speaker changes
+ /// - `every_paragraph`: Show speaker label on every paragraph
+ /// Default Value: changes
+ ///
+ public enum ExportTranscriptRequestIncludeSpeakerLabels
+ {
+ ///
+ /// Show speaker label when the speaker changes
+ ///
+ Changes,
+ ///
+ /// Show speaker label on every paragraph
+ ///
+ EveryParagraph,
+ ///
+ /// No speaker labels
+ ///
+ Off,
+ }
+
+ ///
+ /// Enum extensions to do fast conversions without the reflection.
+ ///
+ public static class ExportTranscriptRequestIncludeSpeakerLabelsExtensions
+ {
+ ///
+ /// Converts an enum to a string.
+ ///
+ public static string ToValueString(this ExportTranscriptRequestIncludeSpeakerLabels value)
+ {
+ return value switch
+ {
+ ExportTranscriptRequestIncludeSpeakerLabels.Changes => "changes",
+ ExportTranscriptRequestIncludeSpeakerLabels.EveryParagraph => "every_paragraph",
+ ExportTranscriptRequestIncludeSpeakerLabels.Off => "off",
+ _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null),
+ };
+ }
+ ///
+ /// Converts an string to a enum.
+ ///
+ public static ExportTranscriptRequestIncludeSpeakerLabels? ToEnum(string value)
+ {
+ return value switch
+ {
+ "changes" => ExportTranscriptRequestIncludeSpeakerLabels.Changes,
+ "every_paragraph" => ExportTranscriptRequestIncludeSpeakerLabels.EveryParagraph,
+ "off" => ExportTranscriptRequestIncludeSpeakerLabels.Off,
+ _ => null,
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestTimecodes.Json.g.cs b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestTimecodes.Json.g.cs
new file mode 100644
index 0000000..0b9846c
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestTimecodes.Json.g.cs
@@ -0,0 +1,92 @@
+#nullable enable
+
+namespace Descript
+{
+ public sealed partial class ExportTranscriptRequestTimecodes
+ {
+ ///
+ /// Serializes the current instance to a JSON string using the provided JsonSerializerContext.
+ ///
+ public string ToJson(
+ global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
+ {
+ return global::System.Text.Json.JsonSerializer.Serialize(
+ this,
+ this.GetType(),
+ jsonSerializerContext);
+ }
+
+ ///
+ /// Serializes the current instance to a JSON string using the provided JsonSerializerOptions.
+ ///
+#if NET8_0_OR_GREATER
+ [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
+ [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
+#endif
+ public string ToJson(
+ global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
+ {
+ return global::System.Text.Json.JsonSerializer.Serialize(
+ this,
+ jsonSerializerOptions);
+ }
+
+ ///
+ /// Deserializes a JSON string using the provided JsonSerializerContext.
+ ///
+ public static global::Descript.ExportTranscriptRequestTimecodes? FromJson(
+ string json,
+ global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
+ {
+ return global::System.Text.Json.JsonSerializer.Deserialize(
+ json,
+ typeof(global::Descript.ExportTranscriptRequestTimecodes),
+ jsonSerializerContext) as global::Descript.ExportTranscriptRequestTimecodes;
+ }
+
+ ///
+ /// Deserializes a JSON string using the provided JsonSerializerOptions.
+ ///
+#if NET8_0_OR_GREATER
+ [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
+ [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
+#endif
+ public static global::Descript.ExportTranscriptRequestTimecodes? FromJson(
+ string json,
+ global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
+ {
+ return global::System.Text.Json.JsonSerializer.Deserialize(
+ json,
+ jsonSerializerOptions);
+ }
+
+ ///
+ /// Deserializes a JSON stream using the provided JsonSerializerContext.
+ ///
+ public static async global::System.Threading.Tasks.ValueTask FromJsonStreamAsync(
+ global::System.IO.Stream jsonStream,
+ global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
+ {
+ return (await global::System.Text.Json.JsonSerializer.DeserializeAsync(
+ jsonStream,
+ typeof(global::Descript.ExportTranscriptRequestTimecodes),
+ jsonSerializerContext).ConfigureAwait(false)) as global::Descript.ExportTranscriptRequestTimecodes;
+ }
+
+ ///
+ /// Deserializes a JSON stream using the provided JsonSerializerOptions.
+ ///
+#if NET8_0_OR_GREATER
+ [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
+ [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
+#endif
+ public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync(
+ global::System.IO.Stream jsonStream,
+ global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
+ {
+ return global::System.Text.Json.JsonSerializer.DeserializeAsync(
+ jsonStream,
+ jsonSerializerOptions);
+ }
+ }
+}
diff --git a/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestTimecodes.g.cs b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestTimecodes.g.cs
new file mode 100644
index 0000000..daf593b
--- /dev/null
+++ b/src/libs/Descript/Generated/Descript.Models.ExportTranscriptRequestTimecodes.g.cs
@@ -0,0 +1,97 @@
+
+#nullable enable
+
+namespace Descript
+{
+ ///
+ /// Timecode options. When provided, timecodes are included in
+ /// the output.
+ ///
+ public sealed partial class ExportTranscriptRequestTimecodes
+ {
+ ///
+ /// Interval in seconds for timecode insertion.
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("frequency_seconds")]
+ public double? FrequencySeconds { get; set; }
+
+ ///
+ /// Show timecodes at paragraph breaks.
+ /// Default Value: false
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("on_paragraphs")]
+ public bool? OnParagraphs { get; set; }
+
+ ///
+ /// Show timecodes at speaker changes.
+ /// Default Value: false
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("on_speakers")]
+ public bool? OnSpeakers { get; set; }
+
+ ///
+ /// Show timecodes at markers.
+ /// Default Value: false
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("on_markers")]
+ public bool? OnMarkers { get; set; }
+
+ ///
+ /// Offset in seconds applied to all timecodes.
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("offset_seconds")]
+ public double? OffsetSeconds { get; set; }
+
+ ///
+ /// Additional properties that are not explicitly defined in the schema
+ ///
+ [global::System.Text.Json.Serialization.JsonExtensionData]
+ public global::System.Collections.Generic.IDictionary AdditionalProperties { get; set; } = new global::System.Collections.Generic.Dictionary();
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// Interval in seconds for timecode insertion.
+ ///
+ ///
+ /// Show timecodes at paragraph breaks.
+ /// Default Value: false
+ ///
+ ///
+ /// Show timecodes at speaker changes.
+ /// Default Value: false
+ ///
+ ///
+ /// Show timecodes at markers.
+ /// Default Value: false
+ ///
+ ///
+ /// Offset in seconds applied to all timecodes.
+ ///
+#if NET7_0_OR_GREATER
+ [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers]
+#endif
+ public ExportTranscriptRequestTimecodes(
+ double? frequencySeconds,
+ bool? onParagraphs,
+ bool? onSpeakers,
+ bool? onMarkers,
+ double? offsetSeconds)
+ {
+ this.FrequencySeconds = frequencySeconds;
+ this.OnParagraphs = onParagraphs;
+ this.OnSpeakers = onSpeakers;
+ this.OnMarkers = onMarkers;
+ this.OffsetSeconds = offsetSeconds;
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public ExportTranscriptRequestTimecodes()
+ {
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/libs/Descript/Generated/autosdk.generated-examples.json b/src/libs/Descript/Generated/autosdk.generated-examples.json
index 811fa39..35ceb9a 100644
--- a/src/libs/Descript/Generated/autosdk.generated-examples.json
+++ b/src/libs/Descript/Generated/autosdk.generated-examples.json
@@ -24,6 +24,17 @@
},
{
"Order": 3,
+ "Title": "Export project transcript",
+ "Slug": "exporttranscript",
+ "Description": "Export the transcript from a project composition.\n\nSupports plain text, Markdown, HTML, RTF, and DOCX formats.\nOptions include speaker labels, timecodes, and markers.\n\nThe response body is the raw transcript file (binary for \u0060docx\u0060,\ntext otherwise) with a \u0060Content-Disposition: attachment\u0060 header and\nan \u0060X-Composition-Id\u0060 header identifying the exported composition.",
+ "Language": "csharp",
+ "Code": "using var client = new DescriptClient(apiKey);\n\nvar request = global::System.Text.Json.JsonSerializer.Deserialize\u003Cglobal::Descript.ExportTranscriptRequest\u003E(\n @\u0022{\n \u0022\u0022project_id\u0022\u0022: \u0022\u00229f36ee32-5a2c-47e7-b1a3-94991d3e3ddb\u0022\u0022,\n \u0022\u0022format\u0022\u0022: \u0022\u0022markdown\u0022\u0022,\n \u0022\u0022include_speaker_labels\u0022\u0022: \u0022\u0022every_paragraph\u0022\u0022,\n \u0022\u0022timecodes\u0022\u0022: {\n \u0022\u0022on_paragraphs\u0022\u0022: true\n }\n}\u0022)!;\n\nvar response = await client.ApiEndpoints.ExportTranscriptAsync(\n request: request\n);\n\n// Example response:\n// Speaker 1: Hello, welcome to the show.\n// \n// Speaker 2: Thanks for having me.",
+ "Format": "sdk",
+ "OperationId": "exportTranscript",
+ "Setup": "This example assumes \u0060using Descript;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential."
+ },
+ {
+ "Order": 4,
"Title": "Get job status",
"Slug": "getjob",
"Description": "Retrieve the status of any job.\n\nThe response format varies based on job type and includes type-specific fields.",
@@ -34,7 +45,7 @@
"Setup": null
},
{
- "Order": 4,
+ "Order": 5,
"Title": "Get project details",
"Slug": "getproject",
"Description": "Get a detailed project summary including all media files and compositions.\n\nReturns the project\u0027s id, name, drive_id, a map of media files (keyed by\ndisplay path) with type and duration, and a list of compositions with id,\nname, duration, and media type.\n\nUse this to inspect a project\u0027s contents before editing or importing media.",
@@ -45,7 +56,7 @@
"Setup": null
},
{
- "Order": 5,
+ "Order": 6,
"Title": "Check API status",
"Slug": "getstatus",
"Description": "\u003E **Work in progress** \u2014 This endpoint is not yet available and will return an error if called.\n\nCheck API availability and validate authentication token.\n\nThis endpoint can be used to:\n- Verify that your authentication token is valid\n- Check API connectivity without performing any heavy operations\n\nReturns a success response if the token is valid, or a 401 error if the token is invalid or missing.",
@@ -56,7 +67,7 @@
"Setup": "This example assumes \u0060using Descript;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential."
},
{
- "Order": 6,
+ "Order": 7,
"Title": "Import media and sequences",
"Slug": "importprojectmedia",
"Description": "Import media files into a new or existing project and create compositions.\n\nThis endpoint can:\n- Create a new project if \u0060project_id\u0060 is not provided\n- Import media files from URLs\n- Create multitrack sequences\n- Create compositions (timelines) from existing or new media in the project\n- Trigger transcription and other background processing tasks\n\n### Media URL requirements\n- URLs must be accessible by Descript servers\n- URLs must support HTTP Range requests\n- Recommended to sign URLs for 12-48 hours to reduce chance of failure\n- [Supported file types](https://help.descript.com/hc/en-us/articles/10164098416909-Supported-file-types)\n\n### Direct file upload\n\nInstead of providing a URL, you can upload files directly by specifying \u0060content_type\u0060 and \u0060file_size\u0060 for a media item. The response will include a signed \u0060upload_url\u0060 for each direct upload item. PUT the file bytes to that URL, and the import job will process it automatically. See the [Direct file upload](#tag/Direct-file-upload) guide for a full walkthrough.\n\n### Async Operations\n\nImports\u00A0run in the background and return a \u0060job_id\u0060. Monitor progress via the [GET /jobs/{job_id}](#operation/getJob) endpoint.\n\n### Dynamic webhook\n\nIf \u0060callback_url\u0060 is provided, Descript will POST the job status to that URL when the job finishes (successfully or not).\n\nThe payload will match the format returned by [GET /jobs/{job_id}](#operation/getJob).",
@@ -67,7 +78,7 @@
"Setup": "This example assumes \u0060using Descript;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential."
},
{
- "Order": 7,
+ "Order": 8,
"Title": "List jobs",
"Slug": "listjobs",
"Description": "List recent jobs with optional filtering by project or job type.\n\nBy default, jobs created within the last 7 days are returned. Use \u0060created_after\u0060 and\n\u0060created_before\u0060 to customize the time range. The maximum lookback is 30 days.\n\nResults are paginated. Use the \u0060cursor\u0060 from the response \u0060pagination.next_cursor\u0060 to\nfetch subsequent pages.\n\nQuery parameters allow you to filter the results:\n* Filter by \u0060project_id\u0060 to see all jobs for a project\n* Filter by \u0060type\u0060 to see specific job types (import/project_media, agent)",
@@ -78,7 +89,7 @@
"Setup": "This example assumes \u0060using Descript;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential."
},
{
- "Order": 8,
+ "Order": 9,
"Title": "List projects",
"Slug": "listprojects",
"Description": "List projects accessible to the authenticated user within a drive.\n\nThe drive is determined from the access token.\n\nResults are paginated. Use the \u0060cursor\u0060 from the response \u0060pagination.next_cursor\u0060\nto fetch subsequent pages.",
@@ -89,7 +100,7 @@
"Setup": "This example assumes \u0060using Descript;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential."
},
{
- "Order": 9,
+ "Order": 10,
"Title": "Publish project media",
"Slug": "publishjob",
"Description": "Publish a project composition to create a shareable link and download the exported file.\n\nPublishes a specific composition from a project, rendering the output as video or audio\nat the specified resolution. When the job completes successfully the result contains both:\n\n- \u0060share_url\u0060: a public URL that can be used to view the published content on Descript\u0027s share site.\n- \u0060download_url\u0060: a time-limited signed URL to download the exported media file directly,\n along with \u0060download_url_expires_at\u0060 indicating when the link expires.\n\n### Republishing\n\nPublishing the same composition a second time automatically reuses the previous share URL,\noverwriting its content \u2014 so bookmarks and links handed out for the first publish keep working.\nRepublish matching is keyed on \u0060(project_id, composition_id, media_type)\u0060, so a Video publish\nand an Audio publish of the same composition produce two separate share URLs.\n\n### Async Operations\n\nPublish jobs run in the background and return a \u0060job_id\u0060. Monitor progress via the [GET /jobs/{job_id}](#operation/getJob) endpoint,\nwhich returns the \u0060share_url\u0060, \u0060download_url\u0060, and \u0060download_url_expires_at\u0060 fields once the job finishes.\n\n### Dynamic webhook\n\nIf \u0060callback_url\u0060 is provided, Descript will POST the job status to that URL when the job completes or fails.\nThe payload will match the format returned by [GET /jobs/{job_id}](#operation/getJob).",
@@ -100,7 +111,7 @@
"Setup": "This example assumes \u0060using Descript;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential."
},
{
- "Order": 10,
+ "Order": 11,
"Title": "Create Import URL",
"Slug": "posteditindescriptschema",
"Description": "Create an Import URL by sending a Project schema to Descript API from your service\u0027s backend.\n\n### Import Schema\nOur import schemas are specified as a minimal JSON list of files which is detailed in full at the bottom of this\nsection. At it\u0027s smallest, the request body looks like:\n\n\u0060\u0060\u0060\n{\n \u0022partner_drive_id\u0022: \u0022162c61d1-6ced-4b25-a622-7dba922983ee\u0022,\n \u0022project_schema\u0022: {\n \u0022schema_version\u0022: \u00221.0.0\u0022,\n \u0022files\u0022: [{\u0022uri\u0022: \u0022https://descriptusercontent.com/jane.wav?signature=d182bca64bf94a1483d2fd16b579f955\u0022}]\n }\n}\n\u0060\u0060\u0060\n\n### File Access\nThe file paths provided in the schema need to either be public or pre-signed URIs with enough time before\nexpiration for failures and retries, we suggest URIs that won\u0027t expire for 48 hours. We ask that the files have\nalready been saved when the import link is generated to minimize cases where we\u0027re waiting for eventually\nconsistent storage of files that will never be written. We will, however, wait for eventual consistency of the\nstorage layer and retry fetching files before eventually timing out.\n\nFiles must be hosted on preapproved hosts as our import process has an allow list which it checks URIs against.\nFiles will be requested with \u0060User-Agent: Descriptbot/1.0\u0060 (version may change) for tracking purposes.\n\n### Import link expiration\nImport links are no longer valid after a user imports their data once. Viewing an already used import link will\nnot allow for importing again and will not provide access to a previously created Descript Project. Partners are\nable to generate a new import link at any time, regardless of if a previous import link has been used.\n\nThe API does not currently provide partners with a link to the Descript Project, though users will be redirected\nto it from Descript\u0027s web interface the first time they import files, and can always find the Project in Descript.\n\nImport links expire after 3 hours and attempting to use an import link after the pre-signed links in the schema\nfile have expired will result in an error, so we recommend generating the import link after the user has clicked\nthe Edit in Descript button.\n\n### Supported media specification\nWe recommend sending the highest quality, uncompressed versions of files available to you. If you have multiple\ntracks, we recommend prioritizing sending us the full multi-track sequence over a combined file.\n\n* Audio: WAV, FLAC, AAC, MP3\n* Video: h264, HEVC (container: MOV, MP4)",
@@ -111,7 +122,7 @@
"Setup": null
},
{
- "Order": 11,
+ "Order": 12,
"Title": "Get Published Project Metadata",
"Slug": "getpublishedprojectmetadata",
"Description": "Retrieve metadata for a published Descript project by its URL slug. This endpoint provides information\nabout the published project including title, duration, publisher details, privacy settings, and subtitles.\n\nThis endpoint requires authentication using a personal token and is subject to rate limiting of 1000\nrequests per hour per user.",
diff --git a/src/libs/Descript/openapi.yaml b/src/libs/Descript/openapi.yaml
index 8315378..db79d31 100644
--- a/src/libs/Descript/openapi.yaml
+++ b/src/libs/Descript/openapi.yaml
@@ -1136,6 +1136,173 @@ paths:
Unprocessable Entity
'429':
$ref: '#/components/responses/Error429Response'
+ /export/transcript:
+ post:
+ tags:
+ - API Endpoints
+ summary: Export project transcript
+ security:
+ - bearerAuth: []
+ description: |
+ Export the transcript from a project composition.
+
+ Supports plain text, Markdown, HTML, RTF, and DOCX formats.
+ Options include speaker labels, timecodes, and markers.
+
+ The response body is the raw transcript file (binary for `docx`,
+ text otherwise) with a `Content-Disposition: attachment` header and
+ an `X-Composition-Id` header identifying the exported composition.
+ operationId: exportTranscript
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ description: Request to export the transcript from a project composition.
+ properties:
+ project_id:
+ type: string
+ format: uuid
+ description: The ID of the project to export from.
+ example: 9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb
+ composition_id:
+ type: string
+ format: uuid
+ description: The ID of the composition to export. Defaults to the first composition.
+ example: 39677a40-1c43-4c36-8449-46cfbc4de2b5
+ format:
+ type: string
+ enum:
+ - txt
+ - markdown
+ - html
+ - rtf
+ - docx
+ description: |
+ Transcript file format. For `docx`, the response `content` field
+ contains the base64-encoded binary file.
+ include_speaker_labels:
+ type: string
+ enum:
+ - 'off'
+ - changes
+ - every_paragraph
+ default: changes
+ description: |
+ Speaker label mode.
+ - `off`: No speaker labels
+ - `changes`: Show speaker label when the speaker changes
+ - `every_paragraph`: Show speaker label on every paragraph
+ include_markers:
+ type: boolean
+ default: false
+ description: Include markers in the transcript.
+ timecodes:
+ type: object
+ description: |
+ Timecode options. When provided, timecodes are included in
+ the output.
+ properties:
+ frequency_seconds:
+ type: number
+ description: Interval in seconds for timecode insertion.
+ on_paragraphs:
+ type: boolean
+ default: false
+ description: Show timecodes at paragraph breaks.
+ on_speakers:
+ type: boolean
+ default: false
+ description: Show timecodes at speaker changes.
+ on_markers:
+ type: boolean
+ default: false
+ description: Show timecodes at markers.
+ offset_seconds:
+ type: number
+ description: Offset in seconds applied to all timecodes.
+ additionalProperties: false
+ required:
+ - project_id
+ - format
+ additionalProperties: false
+ examples:
+ plain_text_with_speakers:
+ summary: Export as plain text with speaker labels
+ value:
+ project_id: 9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb
+ format: txt
+ include_speaker_labels: changes
+ markdown_with_timecodes:
+ summary: Export as Markdown with timecodes
+ value:
+ project_id: 9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb
+ format: markdown
+ include_speaker_labels: every_paragraph
+ timecodes:
+ on_paragraphs: true
+ description: Transcript export request
+ required: true
+ responses:
+ '200':
+ description: |
+ Transcript exported successfully. The response body is the raw
+ transcript file with the appropriate Content-Type for the
+ requested format.
+
+ The `X-Composition-Id` response header contains the composition
+ UUID that was exported.
+ headers:
+ Content-Disposition:
+ schema:
+ type: string
+ description: Attachment filename, e.g. `attachment; filename="transcript.md"`
+ X-Composition-Id:
+ schema:
+ type: string
+ format: uuid
+ description: The composition ID that was exported
+ content:
+ text/plain:
+ schema:
+ type: string
+ example: |-
+ Speaker 1: Hello, welcome to the show.
+
+ Speaker 2: Thanks for having me.
+ text/markdown:
+ schema:
+ type: string
+ text/html:
+ schema:
+ type: string
+ application/rtf:
+ schema:
+ type: string
+ application/vnd.openxmlformats-officedocument.wordprocessingml.document:
+ schema:
+ type: string
+ format: binary
+ '400':
+ description: Invalid input
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error400'
+ '401':
+ description: Unauthorized
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error401'
+ '403':
+ description: Forbidden
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error403'
+ '429':
+ $ref: '#/components/responses/Error429Response'
/jobs:
get:
tags: