diff --git a/src/libs/Fal/Generated/Fal.AnyOf.3.Json.g.cs b/src/libs/Fal/Generated/Fal.AnyOf.3.Json.g.cs new file mode 100644 index 0000000..2532415 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.AnyOf.3.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public readonly partial struct AnyOf + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.AnyOf? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.AnyOf), + jsonSerializerContext) as global::Fal.AnyOf?; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.AnyOf? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.AnyOf? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.AnyOf), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.AnyOf?; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask?> FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync?>( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.AnyOf.3.g.cs b/src/libs/Fal/Generated/Fal.AnyOf.3.g.cs new file mode 100644 index 0000000..d21d722 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.AnyOf.3.g.cs @@ -0,0 +1,377 @@ + +#nullable enable + +namespace Fal +{ + /// + /// + /// + public readonly partial struct AnyOf : global::System.IEquatable> + { + /// + /// + /// +#if NET6_0_OR_GREATER + public T1? Value1 { get; init; } +#else + public T1? Value1 { get; } +#endif + + /// + /// + /// +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(Value1))] +#endif + public bool IsValue1 => Value1 != null; + + /// + /// + /// + public bool TryPickValue1( +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.NotNullWhen(true)] +#endif + out T1? value) + { + value = Value1; + return IsValue1; + } + + /// + /// + /// + public T1 PickValue1() => IsValue1 + ? Value1! + : throw new global::System.InvalidOperationException($"Expected union variant 'Value1' but the value was {ToString()}."); + + /// + /// + /// +#if NET6_0_OR_GREATER + public T2? Value2 { get; init; } +#else + public T2? Value2 { get; } +#endif + + /// + /// + /// +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(Value2))] +#endif + public bool IsValue2 => Value2 != null; + + /// + /// + /// + public bool TryPickValue2( +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.NotNullWhen(true)] +#endif + out T2? value) + { + value = Value2; + return IsValue2; + } + + /// + /// + /// + public T2 PickValue2() => IsValue2 + ? Value2! + : throw new global::System.InvalidOperationException($"Expected union variant 'Value2' but the value was {ToString()}."); + + /// + /// + /// +#if NET6_0_OR_GREATER + public T3? Value3 { get; init; } +#else + public T3? Value3 { get; } +#endif + + /// + /// + /// +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(Value3))] +#endif + public bool IsValue3 => Value3 != null; + + /// + /// + /// + public bool TryPickValue3( +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.NotNullWhen(true)] +#endif + out T3? value) + { + value = Value3; + return IsValue3; + } + + /// + /// + /// + public T3 PickValue3() => IsValue3 + ? Value3! + : throw new global::System.InvalidOperationException($"Expected union variant 'Value3' but the value was {ToString()}."); + /// + /// + /// + public static implicit operator AnyOf(T1 value) => new AnyOf((T1?)value); + + /// + /// + /// + public static implicit operator T1?(AnyOf @this) => @this.Value1; + + /// + /// + /// + public AnyOf(T1? value) + { + Value1 = value; + } + + /// + /// + /// + public static AnyOf FromValue1(T1? value) => new AnyOf(value); + + /// + /// + /// + public static implicit operator AnyOf(T2 value) => new AnyOf((T2?)value); + + /// + /// + /// + public static implicit operator T2?(AnyOf @this) => @this.Value2; + + /// + /// + /// + public AnyOf(T2? value) + { + Value2 = value; + } + + /// + /// + /// + public static AnyOf FromValue2(T2? value) => new AnyOf(value); + + /// + /// + /// + public static implicit operator AnyOf(T3 value) => new AnyOf((T3?)value); + + /// + /// + /// + public static implicit operator T3?(AnyOf @this) => @this.Value3; + + /// + /// + /// + public AnyOf(T3? value) + { + Value3 = value; + } + + /// + /// + /// + public static AnyOf FromValue3(T3? value) => new AnyOf(value); + + /// + /// + /// + public AnyOf( + T1? value1, + T2? value2, + T3? value3 + ) + { + Value1 = value1; + Value2 = value2; + Value3 = value3; + } + + /// + /// + /// + public object? Object => + Value3 as object ?? + Value2 as object ?? + Value1 as object + ; + + /// + /// + /// + public override string? ToString() => + Value1?.ToString() ?? + Value2?.ToString() ?? + Value3?.ToString() + ; + + /// + /// + /// + public bool Validate() + { + return IsValue1 || IsValue2 || IsValue3; + } + + /// + /// + /// + public TResult? Match( + global::System.Func? value1 = null, + global::System.Func? value2 = null, + global::System.Func? value3 = null, + bool validate = true) + { + if (validate) + { + Validate(); + } + + if (IsValue1 && value1 != null) + { + return value1(Value1!); + } + else if (IsValue2 && value2 != null) + { + return value2(Value2!); + } + else if (IsValue3 && value3 != null) + { + return value3(Value3!); + } + + return default(TResult); + } + + /// + /// + /// + public void Match( + global::System.Action? value1 = null, + + global::System.Action? value2 = null, + + global::System.Action? value3 = null, + bool validate = true) + { + if (validate) + { + Validate(); + } + + if (IsValue1) + { + value1?.Invoke(Value1!); + } + else if (IsValue2) + { + value2?.Invoke(Value2!); + } + else if (IsValue3) + { + value3?.Invoke(Value3!); + } + } + + /// + /// + /// + public void Switch( + global::System.Action? value1 = null, + global::System.Action? value2 = null, + global::System.Action? value3 = null, + bool validate = true) + { + if (validate) + { + Validate(); + } + + if (IsValue1) + { + value1?.Invoke(Value1!); + } + else if (IsValue2) + { + value2?.Invoke(Value2!); + } + else if (IsValue3) + { + value3?.Invoke(Value3!); + } + } + + /// + /// + /// + public override int GetHashCode() + { + var fields = new object?[] + { + Value1, + typeof(T1), + Value2, + typeof(T2), + Value3, + typeof(T3), + }; + const int offset = unchecked((int)2166136261); + const int prime = 16777619; + static int HashCodeAggregator(int hashCode, object? value) => value == null + ? (hashCode ^ 0) * prime + : (hashCode ^ value.GetHashCode()) * prime; + + return global::System.Linq.Enumerable.Aggregate(fields, offset, HashCodeAggregator); + } + + /// + /// + /// + public bool Equals(AnyOf other) + { + return + global::System.Collections.Generic.EqualityComparer.Default.Equals(Value1, other.Value1) && + global::System.Collections.Generic.EqualityComparer.Default.Equals(Value2, other.Value2) && + global::System.Collections.Generic.EqualityComparer.Default.Equals(Value3, other.Value3) + ; + } + + /// + /// + /// + public static bool operator ==(AnyOf obj1, AnyOf obj2) + { + return global::System.Collections.Generic.EqualityComparer>.Default.Equals(obj1, obj2); + } + + /// + /// + /// + public static bool operator !=(AnyOf obj1, AnyOf obj2) + { + return !(obj1 == obj2); + } + + /// + /// + /// + public override bool Equals(object? obj) + { + return obj is AnyOf o && Equals(o); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.AssetsClient.GetAssetLineage.g.cs b/src/libs/Fal/Generated/Fal.AssetsClient.GetAssetLineage.g.cs new file mode 100644 index 0000000..ab4736f --- /dev/null +++ b/src/libs/Fal/Generated/Fal.AssetsClient.GetAssetLineage.g.cs @@ -0,0 +1,785 @@ + +#nullable enable + +namespace Fal +{ + public partial class AssetsClient + { + + + private static readonly global::Fal.EndPointSecurityRequirement s_GetAssetLineageSecurityRequirement0 = + new global::Fal.EndPointSecurityRequirement + { + Authorizations = new global::Fal.EndPointAuthorizationRequirement[] + { new global::Fal.EndPointAuthorizationRequirement + { + Type = "Http", + SchemeId = "HttpBearer", + Location = "Header", + Name = "Bearer", + FriendlyName = "Bearer", + }, + }, + }; + private static readonly global::Fal.EndPointSecurityRequirement[] s_GetAssetLineageSecurityRequirements = + new global::Fal.EndPointSecurityRequirement[] + { s_GetAssetLineageSecurityRequirement0, + }; + partial void PrepareGetAssetLineageArguments( + global::System.Net.Http.HttpClient httpClient, + ref string assetId, + ref int? depth); + partial void PrepareGetAssetLineageRequest( + global::System.Net.Http.HttpClient httpClient, + global::System.Net.Http.HttpRequestMessage httpRequestMessage, + string assetId, + int? depth); + partial void ProcessGetAssetLineageResponse( + global::System.Net.Http.HttpClient httpClient, + global::System.Net.Http.HttpResponseMessage httpResponseMessage); + + partial void ProcessGetAssetLineageResponseContent( + global::System.Net.Http.HttpClient httpClient, + global::System.Net.Http.HttpResponseMessage httpResponseMessage, + ref string content); + + /// + /// Get asset lineage
+ /// Get the derivation lineage of an asset by asset ID: the inputs it was generated from, the generation requests along the way, and any referenced characters, traversed recursively up to `depth` levels. Deleted or expired ancestors stay in the graph flagged as tombstones; inputs that were never captured appear as external inputs. + ///
+ /// + /// Asset ID
+ /// Example: d8b6elcregj72v34jr8g + /// + /// + /// Maximum traversal depth (levels of derivation edges)
+ /// Default Value: 5
+ /// Example: 5 + /// + /// 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 GetAssetLineageAsync( + string assetId, + int? depth = default, + global::Fal.AutoSDKRequestOptions? requestOptions = default, + global::System.Threading.CancellationToken cancellationToken = default) + { + var __response = await GetAssetLineageAsResponseAsync( + assetId: assetId, + depth: depth, + requestOptions: requestOptions, + cancellationToken: cancellationToken + ).ConfigureAwait(false); + + return __response.Body; + } + /// + /// Get asset lineage
+ /// Get the derivation lineage of an asset by asset ID: the inputs it was generated from, the generation requests along the way, and any referenced characters, traversed recursively up to `depth` levels. Deleted or expired ancestors stay in the graph flagged as tombstones; inputs that were never captured appear as external inputs. + ///
+ /// + /// Asset ID
+ /// Example: d8b6elcregj72v34jr8g + /// + /// + /// Maximum traversal depth (levels of derivation edges)
+ /// Default Value: 5
+ /// Example: 5 + /// + /// 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> GetAssetLineageAsResponseAsync( + string assetId, + int? depth = default, + global::Fal.AutoSDKRequestOptions? requestOptions = default, + global::System.Threading.CancellationToken cancellationToken = default) + { + PrepareArguments( + client: HttpClient); + PrepareGetAssetLineageArguments( + httpClient: HttpClient, + assetId: ref assetId, + depth: ref depth); + + + var __authorizations = global::Fal.EndPointSecurityResolver.ResolveAuthorizations( + availableAuthorizations: Authorizations, + securityRequirements: s_GetAssetLineageSecurityRequirements, + operationName: "GetAssetLineageAsync"); + + using var __timeoutCancellationTokenSource = global::Fal.AutoSDKRequestOptionsSupport.CreateTimeoutCancellationTokenSource( + clientOptions: Options, + requestOptions: requestOptions, + cancellationToken: cancellationToken); + var __effectiveCancellationToken = __timeoutCancellationTokenSource?.Token ?? cancellationToken; + var __effectiveReadResponseAsString = global::Fal.AutoSDKRequestOptionsSupport.GetReadResponseAsString( + clientOptions: Options, + requestOptions: requestOptions, + fallbackValue: ReadResponseAsString); + var __maxAttempts = global::Fal.AutoSDKRequestOptionsSupport.GetMaxAttempts( + clientOptions: Options, + requestOptions: requestOptions, + supportsRetry: true); + + global::System.Net.Http.HttpRequestMessage __CreateHttpRequest() + { + + var __pathBuilder = new global::Fal.PathBuilder( + path: $"/assets/{assetId}/lineage", + baseUri: HttpClient.BaseAddress); + __pathBuilder + .AddOptionalParameter("depth", depth?.ToString()) + ; + var __path = __pathBuilder.ToString(); + __path = global::Fal.AutoSDKRequestOptionsSupport.AppendQueryParameters( + path: __path, + clientParameters: Options.QueryParameters, + requestParameters: requestOptions?.QueryParameters); + var __httpRequest = new global::System.Net.Http.HttpRequestMessage( + method: global::System.Net.Http.HttpMethod.Get, + 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); + } + } + global::Fal.AutoSDKRequestOptionsSupport.ApplyHeaders( + request: __httpRequest, + clientHeaders: Options.Headers, + requestHeaders: requestOptions?.Headers); + + PrepareRequest( + client: HttpClient, + request: __httpRequest); + PrepareGetAssetLineageRequest( + httpClient: HttpClient, + httpRequestMessage: __httpRequest, + assetId: assetId!, + depth: depth); + + 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::Fal.AutoSDKRequestOptionsSupport.OnBeforeRequestAsync( + clientOptions: Options, + context: global::Fal.AutoSDKRequestOptionsSupport.CreateHookContext( + operationId: "GetAssetLineage", + methodName: "GetAssetLineageAsync", + pathTemplate: "$\"/assets/{assetId}/lineage\"", + httpMethod: "GET", + 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::Fal.AutoSDKRequestOptionsSupport.GetRetryDelay( + clientOptions: Options, + requestOptions: requestOptions, + response: null, + attempt: __attempt); + var __willRetry = __attempt < __maxAttempts && !__effectiveCancellationToken.IsCancellationRequested; + await global::Fal.AutoSDKRequestOptionsSupport.OnAfterErrorAsync( + clientOptions: Options, + context: global::Fal.AutoSDKRequestOptionsSupport.CreateHookContext( + operationId: "GetAssetLineage", + methodName: "GetAssetLineageAsync", + pathTemplate: "$\"/assets/{assetId}/lineage\"", + httpMethod: "GET", + 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::Fal.AutoSDKRequestOptionsSupport.DelayBeforeRetryAsync( + retryDelay: __retryDelay, + cancellationToken: __effectiveCancellationToken).ConfigureAwait(false); + continue; + } + + if (__response != null && + __attempt < __maxAttempts && + global::Fal.AutoSDKRequestOptionsSupport.ShouldRetryStatusCode(__response.StatusCode)) + { + var __retryDelay = global::Fal.AutoSDKRequestOptionsSupport.GetRetryDelay( + clientOptions: Options, + requestOptions: requestOptions, + response: __response, + attempt: __attempt); + await global::Fal.AutoSDKRequestOptionsSupport.OnAfterErrorAsync( + clientOptions: Options, + context: global::Fal.AutoSDKRequestOptionsSupport.CreateHookContext( + operationId: "GetAssetLineage", + methodName: "GetAssetLineageAsync", + pathTemplate: "$\"/assets/{assetId}/lineage\"", + httpMethod: "GET", + 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::Fal.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); + ProcessGetAssetLineageResponse( + httpClient: HttpClient, + httpResponseMessage: __response); + if (__response.IsSuccessStatusCode) + { + await global::Fal.AutoSDKRequestOptionsSupport.OnAfterSuccessAsync( + clientOptions: Options, + context: global::Fal.AutoSDKRequestOptionsSupport.CreateHookContext( + operationId: "GetAssetLineage", + methodName: "GetAssetLineageAsync", + pathTemplate: "$\"/assets/{assetId}/lineage\"", + httpMethod: "GET", + 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::Fal.AutoSDKRequestOptionsSupport.OnAfterErrorAsync( + clientOptions: Options, + context: global::Fal.AutoSDKRequestOptionsSupport.CreateHookContext( + operationId: "GetAssetLineage", + methodName: "GetAssetLineageAsync", + pathTemplate: "$\"/assets/{assetId}/lineage\"", + httpMethod: "GET", + 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 request parameters + if ((int)__response.StatusCode == 400) + { + string? __content_400 = null; + global::System.Exception? __exception_400 = null; + global::Fal.GetAssetLineageResponse2? __value_400 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_400 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_400 = global::Fal.GetAssetLineageResponse2.FromJson(__content_400, JsonSerializerContext); + } + else + { + __content_400 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_400 = global::Fal.GetAssetLineageResponse2.FromJson(__content_400, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_400 = __ex; + } + + + throw global::Fal.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)); + } + // Authentication required + if ((int)__response.StatusCode == 401) + { + string? __content_401 = null; + global::System.Exception? __exception_401 = null; + global::Fal.GetAssetLineageResponse3? __value_401 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_401 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_401 = global::Fal.GetAssetLineageResponse3.FromJson(__content_401, JsonSerializerContext); + } + else + { + __content_401 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_401 = global::Fal.GetAssetLineageResponse3.FromJson(__content_401, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_401 = __ex; + } + + + throw global::Fal.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)); + } + // Access denied + if ((int)__response.StatusCode == 403) + { + string? __content_403 = null; + global::System.Exception? __exception_403 = null; + global::Fal.GetAssetLineageResponse4? __value_403 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_403 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_403 = global::Fal.GetAssetLineageResponse4.FromJson(__content_403, JsonSerializerContext); + } + else + { + __content_403 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_403 = global::Fal.GetAssetLineageResponse4.FromJson(__content_403, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_403 = __ex; + } + + + throw global::Fal.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)); + } + // Resource not found + if ((int)__response.StatusCode == 404) + { + string? __content_404 = null; + global::System.Exception? __exception_404 = null; + global::Fal.GetAssetLineageResponse5? __value_404 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_404 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_404 = global::Fal.GetAssetLineageResponse5.FromJson(__content_404, JsonSerializerContext); + } + else + { + __content_404 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_404 = global::Fal.GetAssetLineageResponse5.FromJson(__content_404, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_404 = __ex; + } + + + throw global::Fal.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_404 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_404, + responseBody: __content_404, + responseObject: __value_404, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + // Invalid request parameters + if ((int)__response.StatusCode == 409) + { + string? __content_409 = null; + global::System.Exception? __exception_409 = null; + global::Fal.GetAssetLineageResponse6? __value_409 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_409 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_409 = global::Fal.GetAssetLineageResponse6.FromJson(__content_409, JsonSerializerContext); + } + else + { + __content_409 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_409 = global::Fal.GetAssetLineageResponse6.FromJson(__content_409, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_409 = __ex; + } + + + throw global::Fal.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_409 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_409, + responseBody: __content_409, + responseObject: __value_409, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + // Invalid request parameters + if ((int)__response.StatusCode == 422) + { + string? __content_422 = null; + global::System.Exception? __exception_422 = null; + global::Fal.GetAssetLineageResponse7? __value_422 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_422 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_422 = global::Fal.GetAssetLineageResponse7.FromJson(__content_422, JsonSerializerContext); + } + else + { + __content_422 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_422 = global::Fal.GetAssetLineageResponse7.FromJson(__content_422, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_422 = __ex; + } + + + throw global::Fal.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_422 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_422, + responseBody: __content_422, + responseObject: __value_422, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + // Rate limit exceeded + if ((int)__response.StatusCode == 429) + { + string? __content_429 = null; + global::System.Exception? __exception_429 = null; + global::Fal.GetAssetLineageResponse8? __value_429 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_429 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_429 = global::Fal.GetAssetLineageResponse8.FromJson(__content_429, JsonSerializerContext); + } + else + { + __content_429 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_429 = global::Fal.GetAssetLineageResponse8.FromJson(__content_429, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_429 = __ex; + } + + + throw global::Fal.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)); + } + // Internal server error + if ((int)__response.StatusCode == 500) + { + string? __content_500 = null; + global::System.Exception? __exception_500 = null; + global::Fal.GetAssetLineageResponse9? __value_500 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_500 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_500 = global::Fal.GetAssetLineageResponse9.FromJson(__content_500, JsonSerializerContext); + } + else + { + __content_500 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_500 = global::Fal.GetAssetLineageResponse9.FromJson(__content_500, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_500 = __ex; + } + + + throw global::Fal.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_500 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_500, + responseBody: __content_500, + responseObject: __value_500, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + // Upstream asset service error + if ((int)__response.StatusCode == 502) + { + string? __content_502 = null; + global::System.Exception? __exception_502 = null; + global::Fal.GetAssetLineageResponse10? __value_502 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_502 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_502 = global::Fal.GetAssetLineageResponse10.FromJson(__content_502, JsonSerializerContext); + } + else + { + __content_502 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_502 = global::Fal.GetAssetLineageResponse10.FromJson(__content_502, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_502 = __ex; + } + + + throw global::Fal.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_502 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_502, + responseBody: __content_502, + responseObject: __value_502, + 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); + ProcessGetAssetLineageResponseContent( + httpClient: HttpClient, + httpResponseMessage: __response, + content: ref __content); + + try + { + __response.EnsureSuccessStatusCode(); + + var __value = global::Fal.GetAssetLineageResponse.FromJson(__content, JsonSerializerContext) ?? + throw new global::System.InvalidOperationException($"Response deserialization failed for \"{__content}\" "); + return new global::Fal.AutoSDKHttpResponse( + statusCode: __response.StatusCode, + headers: global::Fal.AutoSDKHttpResponse.CreateHeaders(__response), + requestUri: __response.RequestMessage?.RequestUri, + body: __value); + } + catch (global::System.Exception __ex) + { + throw global::Fal.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(); + using var __content = await __response.Content.ReadAsStreamAsync( + #if NET5_0_OR_GREATER + __effectiveCancellationToken + #endif + ).ConfigureAwait(false); + + var __value = await global::Fal.GetAssetLineageResponse.FromJsonStreamAsync(__content, JsonSerializerContext).ConfigureAwait(false) ?? + throw new global::System.InvalidOperationException("Response deserialization failed."); + return new global::Fal.AutoSDKHttpResponse( + statusCode: __response.StatusCode, + headers: global::Fal.AutoSDKHttpResponse.CreateHeaders(__response), + requestUri: __response.RequestMessage?.RequestUri, + body: __value); + } + 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::Fal.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(); + } + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.IAssetsClient.GetAssetLineage.g.cs b/src/libs/Fal/Generated/Fal.IAssetsClient.GetAssetLineage.g.cs new file mode 100644 index 0000000..9458420 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.IAssetsClient.GetAssetLineage.g.cs @@ -0,0 +1,50 @@ +#nullable enable + +namespace Fal +{ + public partial interface IAssetsClient + { + /// + /// Get asset lineage
+ /// Get the derivation lineage of an asset by asset ID: the inputs it was generated from, the generation requests along the way, and any referenced characters, traversed recursively up to `depth` levels. Deleted or expired ancestors stay in the graph flagged as tombstones; inputs that were never captured appear as external inputs. + ///
+ /// + /// Asset ID
+ /// Example: d8b6elcregj72v34jr8g + /// + /// + /// Maximum traversal depth (levels of derivation edges)
+ /// Default Value: 5
+ /// Example: 5 + /// + /// 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 GetAssetLineageAsync( + string assetId, + int? depth = default, + global::Fal.AutoSDKRequestOptions? requestOptions = default, + global::System.Threading.CancellationToken cancellationToken = default); + /// + /// Get asset lineage
+ /// Get the derivation lineage of an asset by asset ID: the inputs it was generated from, the generation requests along the way, and any referenced characters, traversed recursively up to `depth` levels. Deleted or expired ancestors stay in the graph flagged as tombstones; inputs that were never captured appear as external inputs. + ///
+ /// + /// Asset ID
+ /// Example: d8b6elcregj72v34jr8g + /// + /// + /// Maximum traversal depth (levels of derivation edges)
+ /// Default Value: 5
+ /// Example: 5 + /// + /// 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> GetAssetLineageAsResponseAsync( + string assetId, + int? depth = default, + global::Fal.AutoSDKRequestOptions? requestOptions = default, + global::System.Threading.CancellationToken cancellationToken = default); + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.AnyOf3.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.AnyOf3.g.cs new file mode 100644 index 0000000..0607a25 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.AnyOf3.g.cs @@ -0,0 +1,216 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public class AnyOfJsonConverter : global::System.Text.Json.Serialization.JsonConverter> + { + /// + public override global::Fal.AnyOf Read( + ref global::System.Text.Json.Utf8JsonReader reader, + global::System.Type typeToConvert, + global::System.Text.Json.JsonSerializerOptions options) + { + options = options ?? throw new global::System.ArgumentNullException(nameof(options)); + var typeInfoResolver = options.TypeInfoResolver ?? throw new global::System.InvalidOperationException("TypeInfoResolver is not set."); + + + using var __jsonDocument = global::System.Text.Json.JsonDocument.ParseValue(ref reader); + var __rawJson = __jsonDocument.RootElement.GetRawText(); + var __jsonProps = new global::System.Collections.Generic.HashSet(); + if (__jsonDocument.RootElement.ValueKind == global::System.Text.Json.JsonValueKind.Object) + { + foreach (var __jsonProp in __jsonDocument.RootElement.EnumerateObject()) + { + __jsonProps.Add(__jsonProp.Name); + } + } + + var __score0 = 0; + { + var __ti = typeInfoResolver.GetTypeInfo(typeof(T1), options); + if (__ti != null && __ti.Kind == global::System.Text.Json.Serialization.Metadata.JsonTypeInfoKind.Object) + { + foreach (var __prop in __ti.Properties) + { + if (__jsonProps.Contains(__prop.Name)) __score0++; + } + } + } + var __score1 = 0; + { + var __ti = typeInfoResolver.GetTypeInfo(typeof(T2), options); + if (__ti != null && __ti.Kind == global::System.Text.Json.Serialization.Metadata.JsonTypeInfoKind.Object) + { + foreach (var __prop in __ti.Properties) + { + if (__jsonProps.Contains(__prop.Name)) __score1++; + } + } + } + var __score2 = 0; + { + var __ti = typeInfoResolver.GetTypeInfo(typeof(T3), options); + if (__ti != null && __ti.Kind == global::System.Text.Json.Serialization.Metadata.JsonTypeInfoKind.Object) + { + foreach (var __prop in __ti.Properties) + { + if (__jsonProps.Contains(__prop.Name)) __score2++; + } + } + } + var __bestScore = 0; + var __bestIndex = -1; + if (__score0 > __bestScore) { __bestScore = __score0; __bestIndex = 0; } + if (__score1 > __bestScore) { __bestScore = __score1; __bestIndex = 1; } + if (__score2 > __bestScore) { __bestScore = __score2; __bestIndex = 2; } + + T1? value1 = default; + T2? value2 = default; + T3? value3 = default; + if (__bestIndex >= 0) + { + if (__bestIndex == 0) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T1), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T1).Name}"); + value1 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + else if (__bestIndex == 1) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T2), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T2).Name}"); + value2 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + else if (__bestIndex == 2) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T3), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T3).Name}"); + value3 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + } + + if (value1 == null && value2 == null && value3 == null) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T1), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T1).Name}"); + value1 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + if (value1 == null && value2 == null && value3 == null) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T2), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T2).Name}"); + value2 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + if (value1 == null && value2 == null && value3 == null) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T3), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T3).Name}"); + value3 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + var __value = new global::Fal.AnyOf( + value1, + + value2, + + value3 + ); + + return __value; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.AnyOf value, + global::System.Text.Json.JsonSerializerOptions options) + { + options = options ?? throw new global::System.ArgumentNullException(nameof(options)); + var typeInfoResolver = options.TypeInfoResolver ?? throw new global::System.InvalidOperationException("TypeInfoResolver is not set."); + + if (value.IsValue1) + { + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T1), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T1).Name}"); + global::System.Text.Json.JsonSerializer.Serialize(writer, value.Value1!, typeInfo); + } + else if (value.IsValue2) + { + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T2), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T2).Name}"); + global::System.Text.Json.JsonSerializer.Serialize(writer, value.Value2!, typeInfo); + } + else if (value.IsValue3) + { + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T3), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T3).Name}"); + global::System.Text.Json.JsonSerializer.Serialize(writer, value.Value3!, typeInfo); + } + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType.g.cs new file mode 100644 index 0000000..3b77c17 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorTypeJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType 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::Fal.GetAssetLineageResponseErrorTypeExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseErrorTypeExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType2.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType2.g.cs new file mode 100644 index 0000000..0026b97 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType2.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType2JsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType2 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::Fal.GetAssetLineageResponseErrorType2Extensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType2)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType2); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType2 value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseErrorType2Extensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType2Nullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType2Nullable.g.cs new file mode 100644 index 0000000..cbc15d1 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType2Nullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType2NullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType2? 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::Fal.GetAssetLineageResponseErrorType2Extensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType2)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType2?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType2? 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::Fal.GetAssetLineageResponseErrorType2Extensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType3.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType3.g.cs new file mode 100644 index 0000000..ade88fb --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType3.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType3JsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType3 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::Fal.GetAssetLineageResponseErrorType3Extensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType3)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType3); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType3 value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseErrorType3Extensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType3Nullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType3Nullable.g.cs new file mode 100644 index 0000000..471e598 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType3Nullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType3NullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType3? 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::Fal.GetAssetLineageResponseErrorType3Extensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType3)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType3?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType3? 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::Fal.GetAssetLineageResponseErrorType3Extensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType4.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType4.g.cs new file mode 100644 index 0000000..1b7535b --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType4.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType4JsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType4 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::Fal.GetAssetLineageResponseErrorType4Extensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType4)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType4); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType4 value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseErrorType4Extensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType4Nullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType4Nullable.g.cs new file mode 100644 index 0000000..bf6509f --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType4Nullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType4NullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType4? 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::Fal.GetAssetLineageResponseErrorType4Extensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType4)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType4?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType4? 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::Fal.GetAssetLineageResponseErrorType4Extensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType5.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType5.g.cs new file mode 100644 index 0000000..2b4f22e --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType5.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType5JsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType5 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::Fal.GetAssetLineageResponseErrorType5Extensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType5)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType5); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType5 value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseErrorType5Extensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType5Nullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType5Nullable.g.cs new file mode 100644 index 0000000..8d6f319 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType5Nullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType5NullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType5? 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::Fal.GetAssetLineageResponseErrorType5Extensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType5)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType5?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType5? 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::Fal.GetAssetLineageResponseErrorType5Extensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType6.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType6.g.cs new file mode 100644 index 0000000..59572fd --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType6.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType6JsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType6 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::Fal.GetAssetLineageResponseErrorType6Extensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType6)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType6); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType6 value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseErrorType6Extensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType6Nullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType6Nullable.g.cs new file mode 100644 index 0000000..84f3439 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType6Nullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType6NullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType6? 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::Fal.GetAssetLineageResponseErrorType6Extensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType6)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType6?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType6? 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::Fal.GetAssetLineageResponseErrorType6Extensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType7.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType7.g.cs new file mode 100644 index 0000000..094671d --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType7.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType7JsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType7 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::Fal.GetAssetLineageResponseErrorType7Extensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType7)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType7); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType7 value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseErrorType7Extensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType7Nullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType7Nullable.g.cs new file mode 100644 index 0000000..9ebc446 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType7Nullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType7NullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType7? 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::Fal.GetAssetLineageResponseErrorType7Extensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType7)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType7?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType7? 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::Fal.GetAssetLineageResponseErrorType7Extensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType8.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType8.g.cs new file mode 100644 index 0000000..3cca851 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType8.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType8JsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType8 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::Fal.GetAssetLineageResponseErrorType8Extensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType8)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType8); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType8 value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseErrorType8Extensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType8Nullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType8Nullable.g.cs new file mode 100644 index 0000000..112d5f6 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType8Nullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType8NullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType8? 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::Fal.GetAssetLineageResponseErrorType8Extensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType8)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType8?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType8? 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::Fal.GetAssetLineageResponseErrorType8Extensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType9.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType9.g.cs new file mode 100644 index 0000000..19cc93f --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType9.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType9JsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType9 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::Fal.GetAssetLineageResponseErrorType9Extensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType9)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType9); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType9 value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseErrorType9Extensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType9Nullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType9Nullable.g.cs new file mode 100644 index 0000000..95a60e7 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorType9Nullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorType9NullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType9? 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::Fal.GetAssetLineageResponseErrorType9Extensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType9)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType9?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType9? 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::Fal.GetAssetLineageResponseErrorType9Extensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorTypeNullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorTypeNullable.g.cs new file mode 100644 index 0000000..ad8843f --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseErrorTypeNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseErrorTypeNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseErrorType? 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::Fal.GetAssetLineageResponseErrorTypeExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseErrorType)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseErrorType?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseErrorType? 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::Fal.GetAssetLineageResponseErrorTypeExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityType.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityType.g.cs new file mode 100644 index 0000000..80ce970 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityType.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageEdgeEntitieEntityTypeJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType 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::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityTypeExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityTypeExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullable.g.cs new file mode 100644 index 0000000..b3b7ae4 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType? 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::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityTypeExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType? 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::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityTypeExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKind.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKind.g.cs new file mode 100644 index 0000000..3a98f6d --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKind.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageEdgeKindJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageEdgeKind 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::Fal.GetAssetLineageResponseLineageEdgeKindExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageEdgeKind)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageEdgeKind); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageEdgeKind value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseLineageEdgeKindExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindNullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindNullable.g.cs new file mode 100644 index 0000000..7a738e6 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageEdgeKindNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageEdgeKind? 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::Fal.GetAssetLineageResponseLineageEdgeKindExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageEdgeKind)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageEdgeKind?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageEdgeKind? 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::Fal.GetAssetLineageResponseLineageEdgeKindExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRole.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRole.g.cs new file mode 100644 index 0000000..b066101 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRole.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageEdgeRoleJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageEdgeRole 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::Fal.GetAssetLineageResponseLineageEdgeRoleExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageEdgeRole)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageEdgeRole); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageEdgeRole value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseLineageEdgeRoleExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleNullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleNullable.g.cs new file mode 100644 index 0000000..a75f8c3 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageEdgeRoleNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageEdgeRole? 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::Fal.GetAssetLineageResponseLineageEdgeRoleExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageEdgeRole)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageEdgeRole?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageEdgeRole? 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::Fal.GetAssetLineageResponseLineageEdgeRoleExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1Kind.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1Kind.g.cs new file mode 100644 index 0000000..d774f4a --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1Kind.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant1KindJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind 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::Fal.GetAssetLineageResponseLineageNodeVariant1KindExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseLineageNodeVariant1KindExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindNullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindNullable.g.cs new file mode 100644 index 0000000..4aa5aba --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant1KindNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind? 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::Fal.GetAssetLineageResponseLineageNodeVariant1KindExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind? 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::Fal.GetAssetLineageResponseLineageNodeVariant1KindExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1Type.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1Type.g.cs new file mode 100644 index 0000000..7fbb793 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1Type.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant1TypeJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant1Type 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::Fal.GetAssetLineageResponseLineageNodeVariant1TypeExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant1Type)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant1Type); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant1Type value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseLineageNodeVariant1TypeExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeNullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeNullable.g.cs new file mode 100644 index 0000000..63a9629 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant1TypeNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant1Type? 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::Fal.GetAssetLineageResponseLineageNodeVariant1TypeExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant1Type)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant1Type?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant1Type? 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::Fal.GetAssetLineageResponseLineageNodeVariant1TypeExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2Kind.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2Kind.g.cs new file mode 100644 index 0000000..61f6532 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2Kind.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant2KindJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind 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::Fal.GetAssetLineageResponseLineageNodeVariant2KindExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseLineageNodeVariant2KindExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindNullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindNullable.g.cs new file mode 100644 index 0000000..8e6645c --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant2KindNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind? 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::Fal.GetAssetLineageResponseLineageNodeVariant2KindExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind? 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::Fal.GetAssetLineageResponseLineageNodeVariant2KindExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3Kind.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3Kind.g.cs new file mode 100644 index 0000000..7f3a702 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3Kind.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant3KindJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind 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::Fal.GetAssetLineageResponseLineageNodeVariant3KindExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseLineageNodeVariant3KindExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindNullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindNullable.g.cs new file mode 100644 index 0000000..9dad3dc --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant3KindNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind? 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::Fal.GetAssetLineageResponseLineageNodeVariant3KindExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind? 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::Fal.GetAssetLineageResponseLineageNodeVariant3KindExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityType.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityType.g.cs new file mode 100644 index 0000000..998ecca --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityType.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant4EntityTypeJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType 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::Fal.GetAssetLineageResponseLineageNodeVariant4EntityTypeExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityTypeExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeNullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeNullable.g.cs new file mode 100644 index 0000000..a5e877d --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant4EntityTypeNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType? 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::Fal.GetAssetLineageResponseLineageNodeVariant4EntityTypeExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType? 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::Fal.GetAssetLineageResponseLineageNodeVariant4EntityTypeExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4Kind.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4Kind.g.cs new file mode 100644 index 0000000..3d121de --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4Kind.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant4KindJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind 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::Fal.GetAssetLineageResponseLineageNodeVariant4KindExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Fal.GetAssetLineageResponseLineageNodeVariant4KindExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindNullable.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindNullable.g.cs new file mode 100644 index 0000000..1d38d53 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public sealed class GetAssetLineageResponseLineageNodeVariant4KindNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind? 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::Fal.GetAssetLineageResponseLineageNodeVariant4KindExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind? 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::Fal.GetAssetLineageResponseLineageNodeVariant4KindExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Fal/Generated/Fal.JsonConverters.OneOf4.g.cs b/src/libs/Fal/Generated/Fal.JsonConverters.OneOf4.g.cs new file mode 100644 index 0000000..62e2338 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.JsonConverters.OneOf4.g.cs @@ -0,0 +1,271 @@ +#nullable enable + +namespace Fal.JsonConverters +{ + /// + public class OneOfJsonConverter : global::System.Text.Json.Serialization.JsonConverter> + { + /// + public override global::Fal.OneOf Read( + ref global::System.Text.Json.Utf8JsonReader reader, + global::System.Type typeToConvert, + global::System.Text.Json.JsonSerializerOptions options) + { + options = options ?? throw new global::System.ArgumentNullException(nameof(options)); + var typeInfoResolver = options.TypeInfoResolver ?? throw new global::System.InvalidOperationException("TypeInfoResolver is not set."); + + + using var __jsonDocument = global::System.Text.Json.JsonDocument.ParseValue(ref reader); + var __rawJson = __jsonDocument.RootElement.GetRawText(); + var __jsonProps = new global::System.Collections.Generic.HashSet(); + if (__jsonDocument.RootElement.ValueKind == global::System.Text.Json.JsonValueKind.Object) + { + foreach (var __jsonProp in __jsonDocument.RootElement.EnumerateObject()) + { + __jsonProps.Add(__jsonProp.Name); + } + } + + var __score0 = 0; + { + var __ti = typeInfoResolver.GetTypeInfo(typeof(T1), options); + if (__ti != null && __ti.Kind == global::System.Text.Json.Serialization.Metadata.JsonTypeInfoKind.Object) + { + foreach (var __prop in __ti.Properties) + { + if (__jsonProps.Contains(__prop.Name)) __score0++; + } + } + } + var __score1 = 0; + { + var __ti = typeInfoResolver.GetTypeInfo(typeof(T2), options); + if (__ti != null && __ti.Kind == global::System.Text.Json.Serialization.Metadata.JsonTypeInfoKind.Object) + { + foreach (var __prop in __ti.Properties) + { + if (__jsonProps.Contains(__prop.Name)) __score1++; + } + } + } + var __score2 = 0; + { + var __ti = typeInfoResolver.GetTypeInfo(typeof(T3), options); + if (__ti != null && __ti.Kind == global::System.Text.Json.Serialization.Metadata.JsonTypeInfoKind.Object) + { + foreach (var __prop in __ti.Properties) + { + if (__jsonProps.Contains(__prop.Name)) __score2++; + } + } + } + var __score3 = 0; + { + var __ti = typeInfoResolver.GetTypeInfo(typeof(T4), options); + if (__ti != null && __ti.Kind == global::System.Text.Json.Serialization.Metadata.JsonTypeInfoKind.Object) + { + foreach (var __prop in __ti.Properties) + { + if (__jsonProps.Contains(__prop.Name)) __score3++; + } + } + } + var __bestScore = 0; + var __bestIndex = -1; + if (__score0 > __bestScore) { __bestScore = __score0; __bestIndex = 0; } + if (__score1 > __bestScore) { __bestScore = __score1; __bestIndex = 1; } + if (__score2 > __bestScore) { __bestScore = __score2; __bestIndex = 2; } + if (__score3 > __bestScore) { __bestScore = __score3; __bestIndex = 3; } + + T1? value1 = default; + T2? value2 = default; + T3? value3 = default; + T4? value4 = default; + if (__bestIndex >= 0) + { + if (__bestIndex == 0) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T1), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T1).Name}"); + value1 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + else if (__bestIndex == 1) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T2), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T2).Name}"); + value2 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + else if (__bestIndex == 2) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T3), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T3).Name}"); + value3 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + else if (__bestIndex == 3) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T4), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T4).Name}"); + value4 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + } + + if (value1 == null && value2 == null && value3 == null && value4 == null) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T1), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T1).Name}"); + value1 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + if (value1 == null && value2 == null && value3 == null && value4 == null) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T2), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T2).Name}"); + value2 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + if (value1 == null && value2 == null && value3 == null && value4 == null) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T3), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T3).Name}"); + value3 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + if (value1 == null && value2 == null && value3 == null && value4 == null) + { + try + { + + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T4), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T4).Name}"); + value4 = global::System.Text.Json.JsonSerializer.Deserialize(__rawJson, typeInfo); + } + catch (global::System.Text.Json.JsonException) + { + } + catch (global::System.InvalidOperationException) + { + } + } + + var __value = new global::Fal.OneOf( + value1, + + value2, + + value3, + + value4 + ); + + return __value; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Fal.OneOf value, + global::System.Text.Json.JsonSerializerOptions options) + { + options = options ?? throw new global::System.ArgumentNullException(nameof(options)); + var typeInfoResolver = options.TypeInfoResolver ?? throw new global::System.InvalidOperationException("TypeInfoResolver is not set."); + + if (value.IsValue1) + { + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T1), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T1).Name}"); + global::System.Text.Json.JsonSerializer.Serialize(writer, value.Value1!, typeInfo); + } + else if (value.IsValue2) + { + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T2), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T2).Name}"); + global::System.Text.Json.JsonSerializer.Serialize(writer, value.Value2!, typeInfo); + } + else if (value.IsValue3) + { + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T3), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T3).Name}"); + global::System.Text.Json.JsonSerializer.Serialize(writer, value.Value3!, typeInfo); + } + else if (value.IsValue4) + { + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(T4), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(T4).Name}"); + global::System.Text.Json.JsonSerializer.Serialize(writer, value.Value4!, typeInfo); + } + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.JsonSerializerContext.g.cs b/src/libs/Fal/Generated/Fal.JsonSerializerContext.g.cs index 0eb8698..3337a69 100644 --- a/src/libs/Fal/Generated/Fal.JsonSerializerContext.g.cs +++ b/src/libs/Fal/Generated/Fal.JsonSerializerContext.g.cs @@ -1505,6 +1505,78 @@ namespace Fal typeof(global::Fal.JsonConverters.GetAssetResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeJsonConverter), typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeNullableJsonConverter), @@ -2555,8 +2627,16 @@ namespace Fal typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.OneOfJsonConverter), + + typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.UnixTimestampJsonConverter), })] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_8df3f0ff85c28fa0")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_4af0049b8319fe25")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf?), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_fc90b6f0c4769996")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_898695ff2bd5345d")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.Dictionary))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.Dictionary))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Text.Json.JsonElement?))] @@ -3053,10 +3133,6 @@ namespace Fal [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponseErrorType), TypeInfoPropertyName = "DeleteAssetCollectionResponseErrorType2_3")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponse2))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponseError2))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponseErrorType2), TypeInfoPropertyName = "DeleteAssetCollectionResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponse3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponseError3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponseErrorType3), TypeInfoPropertyName = "DeleteAssetCollectionResponseErrorType32")] internal sealed partial class SourceGenerationContextChunk0 : global::System.Text.Json.Serialization.JsonSerializerContext { } @@ -4560,6 +4636,78 @@ internal sealed partial class SourceGenerationContextChunk0 : global::System.Tex typeof(global::Fal.JsonConverters.GetAssetResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeJsonConverter), typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeNullableJsonConverter), @@ -5610,8 +5758,20 @@ internal sealed partial class SourceGenerationContextChunk0 : global::System.Tex typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.OneOfJsonConverter), + + typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.UnixTimestampJsonConverter), })] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_8df3f0ff85c28fa0")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_4af0049b8319fe25")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf?), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_fc90b6f0c4769996")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_898695ff2bd5345d")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponseErrorType2), TypeInfoPropertyName = "DeleteAssetCollectionResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponse3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponseError3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponseErrorType3), TypeInfoPropertyName = "DeleteAssetCollectionResponseErrorType32")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponse4))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponseError4))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteAssetCollectionResponseErrorType4), TypeInfoPropertyName = "DeleteAssetCollectionResponseErrorType42")] @@ -6104,14 +6264,6 @@ internal sealed partial class SourceGenerationContextChunk0 : global::System.Tex [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseError3))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseErrorType3), TypeInfoPropertyName = "CreateAssetTagResponseErrorType32")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponse5))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseError4))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseErrorType4), TypeInfoPropertyName = "CreateAssetTagResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponse6))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseError5))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseErrorType5), TypeInfoPropertyName = "CreateAssetTagResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponse7))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseError6))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseErrorType6), TypeInfoPropertyName = "CreateAssetTagResponseErrorType62")] internal sealed partial class SourceGenerationContextChunk1 : global::System.Text.Json.Serialization.JsonSerializerContext { } @@ -7615,6 +7767,78 @@ internal sealed partial class SourceGenerationContextChunk1 : global::System.Tex typeof(global::Fal.JsonConverters.GetAssetResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeJsonConverter), typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeNullableJsonConverter), @@ -8665,8 +8889,24 @@ internal sealed partial class SourceGenerationContextChunk1 : global::System.Tex typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.OneOfJsonConverter), + + typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.UnixTimestampJsonConverter), })] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_8df3f0ff85c28fa0")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_4af0049b8319fe25")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf?), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_fc90b6f0c4769996")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_898695ff2bd5345d")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseError4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseErrorType4), TypeInfoPropertyName = "CreateAssetTagResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponse6))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseError5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseErrorType5), TypeInfoPropertyName = "CreateAssetTagResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponse7))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseError6))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseErrorType6), TypeInfoPropertyName = "CreateAssetTagResponseErrorType62")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponse8))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseError7))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateAssetTagResponseErrorType7), TypeInfoPropertyName = "CreateAssetTagResponseErrorType72")] @@ -8826,6 +9066,53 @@ internal sealed partial class SourceGenerationContextChunk1 : global::System.Tex [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetResponse10))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetResponseError9))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetResponseErrorType9), TypeInfoPropertyName = "GetAssetResponseErrorType92")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponse))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineage))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant1))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant1Kind2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant1Type), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant1Type2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant2Kind2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant3Kind2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4Kind2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4EntityType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageEdge))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageEdgeKind), TypeInfoPropertyName = "GetAssetLineageResponseLineageEdgeKind2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.AnyOf), TypeInfoPropertyName = "AnyOfGetAssetLineageResponseLineageEdgeRoleObjectObject2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageEdgeRole), TypeInfoPropertyName = "GetAssetLineageResponseLineageEdgeRole2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageEdgeEntitie))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType), TypeInfoPropertyName = "GetAssetLineageResponseLineageEdgeEntitieEntityType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponse2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseError))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType), TypeInfoPropertyName = "GetAssetLineageResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponse3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseError2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType2), TypeInfoPropertyName = "GetAssetLineageResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponse4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseError3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType3), TypeInfoPropertyName = "GetAssetLineageResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponse5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseError4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType4), TypeInfoPropertyName = "GetAssetLineageResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponse6))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseError5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType5), TypeInfoPropertyName = "GetAssetLineageResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponse7))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseError6))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType6), TypeInfoPropertyName = "GetAssetLineageResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponse8))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseError7))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType7), TypeInfoPropertyName = "GetAssetLineageResponseErrorType72")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponse9))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseError8))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType8), TypeInfoPropertyName = "GetAssetLineageResponseErrorType82")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponse10))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseError9))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType9), TypeInfoPropertyName = "GetAssetLineageResponseErrorType92")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.FavoriteAssetResponse))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.FavoriteAssetResponse2))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.FavoriteAssetResponseError))] @@ -9108,65 +9395,6 @@ internal sealed partial class SourceGenerationContextChunk1 : global::System.Tex [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseErrorType2), TypeInfoPropertyName = "ServerlessListAppsResponseErrorType22")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponse4))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseError3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseErrorType3), TypeInfoPropertyName = "ServerlessListAppsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponse5))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseError4))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseErrorType4), TypeInfoPropertyName = "ServerlessListAppsResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponse6))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseError5))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseErrorType5), TypeInfoPropertyName = "ServerlessListAppsResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse2))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseError))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseErrorType), TypeInfoPropertyName = "ServerlessGetAppQueueInfoResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseError2))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseErrorType2), TypeInfoPropertyName = "ServerlessGetAppQueueInfoResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse4))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseError3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseErrorType3), TypeInfoPropertyName = "ServerlessGetAppQueueInfoResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse5))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseError4))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseErrorType4), TypeInfoPropertyName = "ServerlessGetAppQueueInfoResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse6))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseError5))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseErrorType5), TypeInfoPropertyName = "ServerlessGetAppQueueInfoResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse2))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError2))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType2), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType3), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse4))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError4))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType4), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse5))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError5))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType5), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse6))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError6))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType6), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType62")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseTimeframe), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseTimeframe2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseAggregation), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseAggregation2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseHistoryItem))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse2))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError2))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType2), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse4))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType3), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse5))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError4))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType4), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse6))] internal sealed partial class SourceGenerationContextChunk2 : global::System.Text.Json.Serialization.JsonSerializerContext { } @@ -10670,6 +10898,78 @@ internal sealed partial class SourceGenerationContextChunk2 : global::System.Tex typeof(global::Fal.JsonConverters.GetAssetResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeJsonConverter), typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeNullableJsonConverter), @@ -11720,29 +12020,96 @@ internal sealed partial class SourceGenerationContextChunk2 : global::System.Tex typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.OneOfJsonConverter), + + typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.UnixTimestampJsonConverter), })] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError5))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType5), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse7))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError6))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType6), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType62")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseEvent))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseEventCategory), TypeInfoPropertyName = "ServerlessListAppEventsResponseEventCategory2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseEventPayload))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseEventPayloadActor))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse2))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseError))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseErrorType), TypeInfoPropertyName = "ServerlessListAppEventsResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseError2))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseErrorType2), TypeInfoPropertyName = "ServerlessListAppEventsResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse4))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseError3))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseErrorType3), TypeInfoPropertyName = "ServerlessListAppEventsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_8df3f0ff85c28fa0")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_4af0049b8319fe25")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf?), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_fc90b6f0c4769996")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_898695ff2bd5345d")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseErrorType3), TypeInfoPropertyName = "ServerlessListAppsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponse5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseError4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseErrorType4), TypeInfoPropertyName = "ServerlessListAppsResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponse6))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseError5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppsResponseErrorType5), TypeInfoPropertyName = "ServerlessListAppsResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseError))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseErrorType), TypeInfoPropertyName = "ServerlessGetAppQueueInfoResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseError2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseErrorType2), TypeInfoPropertyName = "ServerlessGetAppQueueInfoResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseError3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseErrorType3), TypeInfoPropertyName = "ServerlessGetAppQueueInfoResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseError4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseErrorType4), TypeInfoPropertyName = "ServerlessGetAppQueueInfoResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponse6))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseError5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetAppQueueInfoResponseErrorType5), TypeInfoPropertyName = "ServerlessGetAppQueueInfoResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType2), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType3), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType4), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType5), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponse6))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseError6))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessFlushAppQueueResponseErrorType6), TypeInfoPropertyName = "ServerlessFlushAppQueueResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseTimeframe), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseTimeframe2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseAggregation), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseAggregation2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseHistoryItem))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType2), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType3), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType4), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse6))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError5))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType5), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponse7))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseError6))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetRunnerHistoryResponseErrorType6), TypeInfoPropertyName = "ServerlessGetRunnerHistoryResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseEvent))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseEventCategory), TypeInfoPropertyName = "ServerlessListAppEventsResponseEventCategory2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseEventPayload))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseEventPayloadActor))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseError))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseErrorType), TypeInfoPropertyName = "ServerlessListAppEventsResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseError2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseErrorType2), TypeInfoPropertyName = "ServerlessListAppEventsResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse4))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseError3))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseErrorType3), TypeInfoPropertyName = "ServerlessListAppEventsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse5))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseError4))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponseErrorType4), TypeInfoPropertyName = "ServerlessListAppEventsResponseErrorType42")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessListAppEventsResponse6))] @@ -12159,69 +12526,6 @@ internal sealed partial class SourceGenerationContextChunk2 : global::System.Tex [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelsResponseModelEnterpriseStatusEnum?), TypeInfoPropertyName = "NullableGetModelsResponseModelEnterpriseStatusEnum2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelsResponseErrorType?), TypeInfoPropertyName = "NullableGetModelsResponseErrorType2_3")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelsResponseErrorType2?), TypeInfoPropertyName = "NullableGetModelsResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelsResponseErrorType3?), TypeInfoPropertyName = "NullableGetModelsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelsResponseErrorType4?), TypeInfoPropertyName = "NullableGetModelsResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetPricingResponseErrorType?), TypeInfoPropertyName = "NullableGetPricingResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetPricingResponseErrorType2?), TypeInfoPropertyName = "NullableGetPricingResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetPricingResponseErrorType3?), TypeInfoPropertyName = "NullableGetPricingResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetPricingResponseErrorType4?), TypeInfoPropertyName = "NullableGetPricingResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.EstimatePricingResponseEstimateType?), TypeInfoPropertyName = "NullableEstimatePricingResponseEstimateType2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.EstimatePricingResponseErrorType?), TypeInfoPropertyName = "NullableEstimatePricingResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.EstimatePricingResponseErrorType2?), TypeInfoPropertyName = "NullableEstimatePricingResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.EstimatePricingResponseErrorType3?), TypeInfoPropertyName = "NullableEstimatePricingResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.EstimatePricingResponseErrorType4?), TypeInfoPropertyName = "NullableEstimatePricingResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetUsageResponseErrorType?), TypeInfoPropertyName = "NullableGetUsageResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetUsageResponseErrorType2?), TypeInfoPropertyName = "NullableGetUsageResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetUsageResponseErrorType3?), TypeInfoPropertyName = "NullableGetUsageResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetUsageResponseErrorType4?), TypeInfoPropertyName = "NullableGetUsageResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType2?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType3?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType4?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType5?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType6?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType62")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetBillingEventsResponseErrorType?), TypeInfoPropertyName = "NullableGetBillingEventsResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetBillingEventsResponseErrorType2?), TypeInfoPropertyName = "NullableGetBillingEventsResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetBillingEventsResponseErrorType3?), TypeInfoPropertyName = "NullableGetBillingEventsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetBillingEventsResponseErrorType4?), TypeInfoPropertyName = "NullableGetBillingEventsResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetBillingEventsResponseErrorType5?), TypeInfoPropertyName = "NullableGetBillingEventsResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType2?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType3?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType4?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType5?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType6?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType62")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType2?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType3?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType4?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType5?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType6?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType62")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.SearchRequestsResponseErrorType?), TypeInfoPropertyName = "NullableSearchRequestsResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.SearchRequestsResponseErrorType2?), TypeInfoPropertyName = "NullableSearchRequestsResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.SearchRequestsResponseErrorType3?), TypeInfoPropertyName = "NullableSearchRequestsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.SearchRequestsResponseErrorType4?), TypeInfoPropertyName = "NullableSearchRequestsResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.SearchRequestsResponseErrorType5?), TypeInfoPropertyName = "NullableSearchRequestsResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListWorkflowsResponseErrorType?), TypeInfoPropertyName = "NullableListWorkflowsResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListWorkflowsResponseErrorType2?), TypeInfoPropertyName = "NullableListWorkflowsResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListWorkflowsResponseErrorType3?), TypeInfoPropertyName = "NullableListWorkflowsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListWorkflowsResponseErrorType4?), TypeInfoPropertyName = "NullableListWorkflowsResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateWorkflowResponseErrorType?), TypeInfoPropertyName = "NullableCreateWorkflowResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateWorkflowResponseErrorType2?), TypeInfoPropertyName = "NullableCreateWorkflowResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateWorkflowResponseErrorType3?), TypeInfoPropertyName = "NullableCreateWorkflowResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateWorkflowResponseErrorType4?), TypeInfoPropertyName = "NullableCreateWorkflowResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateWorkflowResponseErrorType5?), TypeInfoPropertyName = "NullableCreateWorkflowResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType2?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType3?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType4?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType5?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType6?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType62")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseAssetType?), TypeInfoPropertyName = "NullableListAssetsResponseAssetType2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType2?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType3?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType4?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType42")] internal sealed partial class SourceGenerationContextChunk3 : global::System.Text.Json.Serialization.JsonSerializerContext { } @@ -13725,6 +14029,78 @@ internal sealed partial class SourceGenerationContextChunk3 : global::System.Tex typeof(global::Fal.JsonConverters.GetAssetResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeJsonConverter), typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeNullableJsonConverter), @@ -14775,8 +15151,79 @@ internal sealed partial class SourceGenerationContextChunk3 : global::System.Tex typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.OneOfJsonConverter), + + typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.UnixTimestampJsonConverter), })] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_8df3f0ff85c28fa0")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_4af0049b8319fe25")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf?), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_fc90b6f0c4769996")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_898695ff2bd5345d")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelsResponseErrorType3?), TypeInfoPropertyName = "NullableGetModelsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelsResponseErrorType4?), TypeInfoPropertyName = "NullableGetModelsResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetPricingResponseErrorType?), TypeInfoPropertyName = "NullableGetPricingResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetPricingResponseErrorType2?), TypeInfoPropertyName = "NullableGetPricingResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetPricingResponseErrorType3?), TypeInfoPropertyName = "NullableGetPricingResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetPricingResponseErrorType4?), TypeInfoPropertyName = "NullableGetPricingResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.EstimatePricingResponseEstimateType?), TypeInfoPropertyName = "NullableEstimatePricingResponseEstimateType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.EstimatePricingResponseErrorType?), TypeInfoPropertyName = "NullableEstimatePricingResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.EstimatePricingResponseErrorType2?), TypeInfoPropertyName = "NullableEstimatePricingResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.EstimatePricingResponseErrorType3?), TypeInfoPropertyName = "NullableEstimatePricingResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.EstimatePricingResponseErrorType4?), TypeInfoPropertyName = "NullableEstimatePricingResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetUsageResponseErrorType?), TypeInfoPropertyName = "NullableGetUsageResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetUsageResponseErrorType2?), TypeInfoPropertyName = "NullableGetUsageResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetUsageResponseErrorType3?), TypeInfoPropertyName = "NullableGetUsageResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetUsageResponseErrorType4?), TypeInfoPropertyName = "NullableGetUsageResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType2?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType3?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType4?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType5?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAnalyticsResponseErrorType6?), TypeInfoPropertyName = "NullableGetAnalyticsResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetBillingEventsResponseErrorType?), TypeInfoPropertyName = "NullableGetBillingEventsResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetBillingEventsResponseErrorType2?), TypeInfoPropertyName = "NullableGetBillingEventsResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetBillingEventsResponseErrorType3?), TypeInfoPropertyName = "NullableGetBillingEventsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetBillingEventsResponseErrorType4?), TypeInfoPropertyName = "NullableGetBillingEventsResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetBillingEventsResponseErrorType5?), TypeInfoPropertyName = "NullableGetBillingEventsResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType2?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType3?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType4?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType5?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteRequestPayloadsResponseErrorType6?), TypeInfoPropertyName = "NullableDeleteRequestPayloadsResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType2?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType3?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType4?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType5?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListRequestsByEndpointResponseErrorType6?), TypeInfoPropertyName = "NullableListRequestsByEndpointResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.SearchRequestsResponseErrorType?), TypeInfoPropertyName = "NullableSearchRequestsResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.SearchRequestsResponseErrorType2?), TypeInfoPropertyName = "NullableSearchRequestsResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.SearchRequestsResponseErrorType3?), TypeInfoPropertyName = "NullableSearchRequestsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.SearchRequestsResponseErrorType4?), TypeInfoPropertyName = "NullableSearchRequestsResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.SearchRequestsResponseErrorType5?), TypeInfoPropertyName = "NullableSearchRequestsResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListWorkflowsResponseErrorType?), TypeInfoPropertyName = "NullableListWorkflowsResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListWorkflowsResponseErrorType2?), TypeInfoPropertyName = "NullableListWorkflowsResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListWorkflowsResponseErrorType3?), TypeInfoPropertyName = "NullableListWorkflowsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListWorkflowsResponseErrorType4?), TypeInfoPropertyName = "NullableListWorkflowsResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateWorkflowResponseErrorType?), TypeInfoPropertyName = "NullableCreateWorkflowResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateWorkflowResponseErrorType2?), TypeInfoPropertyName = "NullableCreateWorkflowResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateWorkflowResponseErrorType3?), TypeInfoPropertyName = "NullableCreateWorkflowResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateWorkflowResponseErrorType4?), TypeInfoPropertyName = "NullableCreateWorkflowResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateWorkflowResponseErrorType5?), TypeInfoPropertyName = "NullableCreateWorkflowResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType2?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType3?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType4?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType5?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetWorkflowResponseErrorType6?), TypeInfoPropertyName = "NullableGetWorkflowResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseAssetType?), TypeInfoPropertyName = "NullableListAssetsResponseAssetType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType2?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType3?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType4?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType42")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType5?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType52")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType6?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType62")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListAssetsResponseErrorType7?), TypeInfoPropertyName = "NullableListAssetsResponseErrorType72")] @@ -15038,6 +15485,25 @@ internal sealed partial class SourceGenerationContextChunk3 : global::System.Tex [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetResponseErrorType7?), TypeInfoPropertyName = "NullableGetAssetResponseErrorType72")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetResponseErrorType8?), TypeInfoPropertyName = "NullableGetAssetResponseErrorType82")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetResponseErrorType9?), TypeInfoPropertyName = "NullableGetAssetResponseErrorType92")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind?), TypeInfoPropertyName = "NullableGetAssetLineageResponseLineageNodeVariant1Kind2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant1Type?), TypeInfoPropertyName = "NullableGetAssetLineageResponseLineageNodeVariant1Type2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind?), TypeInfoPropertyName = "NullableGetAssetLineageResponseLineageNodeVariant2Kind2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind?), TypeInfoPropertyName = "NullableGetAssetLineageResponseLineageNodeVariant3Kind2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind?), TypeInfoPropertyName = "NullableGetAssetLineageResponseLineageNodeVariant4Kind2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType?), TypeInfoPropertyName = "NullableGetAssetLineageResponseLineageNodeVariant4EntityType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageEdgeKind?), TypeInfoPropertyName = "NullableGetAssetLineageResponseLineageEdgeKind2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.AnyOf?), TypeInfoPropertyName = "NullableAnyOfGetAssetLineageResponseLineageEdgeRoleObjectObject2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageEdgeRole?), TypeInfoPropertyName = "NullableGetAssetLineageResponseLineageEdgeRole2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType?), TypeInfoPropertyName = "NullableGetAssetLineageResponseLineageEdgeEntitieEntityType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType?), TypeInfoPropertyName = "NullableGetAssetLineageResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType2?), TypeInfoPropertyName = "NullableGetAssetLineageResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType3?), TypeInfoPropertyName = "NullableGetAssetLineageResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType4?), TypeInfoPropertyName = "NullableGetAssetLineageResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType5?), TypeInfoPropertyName = "NullableGetAssetLineageResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType6?), TypeInfoPropertyName = "NullableGetAssetLineageResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType7?), TypeInfoPropertyName = "NullableGetAssetLineageResponseErrorType72")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType8?), TypeInfoPropertyName = "NullableGetAssetLineageResponseErrorType82")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAssetLineageResponseErrorType9?), TypeInfoPropertyName = "NullableGetAssetLineageResponseErrorType92")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.FavoriteAssetResponseErrorType?), TypeInfoPropertyName = "NullableFavoriteAssetResponseErrorType2_3")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.FavoriteAssetResponseErrorType2?), TypeInfoPropertyName = "NullableFavoriteAssetResponseErrorType22")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.FavoriteAssetResponseErrorType3?), TypeInfoPropertyName = "NullableFavoriteAssetResponseErrorType32")] @@ -15191,92 +15657,6 @@ internal sealed partial class SourceGenerationContextChunk3 : global::System.Tex [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetUsageResponseErrorType?), TypeInfoPropertyName = "NullableServerlessGetUsageResponseErrorType2_3")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetUsageResponseErrorType2?), TypeInfoPropertyName = "NullableServerlessGetUsageResponseErrorType22")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetUsageResponseErrorType3?), TypeInfoPropertyName = "NullableServerlessGetUsageResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetUsageResponseErrorType4?), TypeInfoPropertyName = "NullableServerlessGetUsageResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetUsageResponseErrorType5?), TypeInfoPropertyName = "NullableServerlessGetUsageResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetUsageResponseErrorType6?), TypeInfoPropertyName = "NullableServerlessGetUsageResponseErrorType62")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseInstanceInstanceType?), TypeInfoPropertyName = "NullableListComputeInstancesResponseInstanceInstanceType2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseInstanceRegion?), TypeInfoPropertyName = "NullableListComputeInstancesResponseInstanceRegion2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseInstanceSector?), TypeInfoPropertyName = "NullableListComputeInstancesResponseInstanceSector2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseInstanceStatus?), TypeInfoPropertyName = "NullableListComputeInstancesResponseInstanceStatus2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseErrorType?), TypeInfoPropertyName = "NullableListComputeInstancesResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseErrorType2?), TypeInfoPropertyName = "NullableListComputeInstancesResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseErrorType3?), TypeInfoPropertyName = "NullableListComputeInstancesResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseErrorType4?), TypeInfoPropertyName = "NullableListComputeInstancesResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseInstanceType?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseInstanceType2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseRegion?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseRegion2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseSector?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseSector2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseStatus?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseStatus2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseErrorType?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseErrorType2?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseErrorType3?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseErrorType4?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseErrorType5?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseInstanceType?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseInstanceType2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseRegion?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseRegion2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseSector?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseSector2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseStatus?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseStatus2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseErrorType?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseErrorType2?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseErrorType3?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseErrorType4?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseErrorType5?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteComputeInstanceResponseErrorType?), TypeInfoPropertyName = "NullableDeleteComputeInstanceResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteComputeInstanceResponseErrorType2?), TypeInfoPropertyName = "NullableDeleteComputeInstanceResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteComputeInstanceResponseErrorType3?), TypeInfoPropertyName = "NullableDeleteComputeInstanceResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteComputeInstanceResponseErrorType4?), TypeInfoPropertyName = "NullableDeleteComputeInstanceResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteComputeInstanceResponseErrorType5?), TypeInfoPropertyName = "NullableDeleteComputeInstanceResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListApiKeysResponseKeyScope?), TypeInfoPropertyName = "NullableListApiKeysResponseKeyScope2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListApiKeysResponseErrorType?), TypeInfoPropertyName = "NullableListApiKeysResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListApiKeysResponseErrorType2?), TypeInfoPropertyName = "NullableListApiKeysResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListApiKeysResponseErrorType3?), TypeInfoPropertyName = "NullableListApiKeysResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListApiKeysResponseErrorType4?), TypeInfoPropertyName = "NullableListApiKeysResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateApiKeyResponseErrorType?), TypeInfoPropertyName = "NullableCreateApiKeyResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateApiKeyResponseErrorType2?), TypeInfoPropertyName = "NullableCreateApiKeyResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateApiKeyResponseErrorType3?), TypeInfoPropertyName = "NullableCreateApiKeyResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateApiKeyResponseErrorType4?), TypeInfoPropertyName = "NullableCreateApiKeyResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateApiKeyResponseErrorType5?), TypeInfoPropertyName = "NullableCreateApiKeyResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteApiKeyResponseErrorType?), TypeInfoPropertyName = "NullableDeleteApiKeyResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteApiKeyResponseErrorType2?), TypeInfoPropertyName = "NullableDeleteApiKeyResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteApiKeyResponseErrorType3?), TypeInfoPropertyName = "NullableDeleteApiKeyResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteApiKeyResponseErrorType4?), TypeInfoPropertyName = "NullableDeleteApiKeyResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAccountBillingResponseErrorType?), TypeInfoPropertyName = "NullableGetAccountBillingResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAccountBillingResponseErrorType2?), TypeInfoPropertyName = "NullableGetAccountBillingResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAccountBillingResponseErrorType3?), TypeInfoPropertyName = "NullableGetAccountBillingResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAccountBillingResponseErrorType4?), TypeInfoPropertyName = "NullableGetAccountBillingResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAccountBillingResponseErrorType5?), TypeInfoPropertyName = "NullableGetAccountBillingResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetFocusReportResponseErrorType?), TypeInfoPropertyName = "NullableGetFocusReportResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetFocusReportResponseErrorType2?), TypeInfoPropertyName = "NullableGetFocusReportResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetFocusReportResponseErrorType3?), TypeInfoPropertyName = "NullableGetFocusReportResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetFocusReportResponseErrorType4?), TypeInfoPropertyName = "NullableGetFocusReportResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetFocusReportResponseErrorType5?), TypeInfoPropertyName = "NullableGetFocusReportResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelAccessControlsResponseErrorType?), TypeInfoPropertyName = "NullableGetModelAccessControlsResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelAccessControlsResponseErrorType2?), TypeInfoPropertyName = "NullableGetModelAccessControlsResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelAccessControlsResponseErrorType3?), TypeInfoPropertyName = "NullableGetModelAccessControlsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelAccessControlsResponseErrorType4?), TypeInfoPropertyName = "NullableGetModelAccessControlsResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType2?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType3?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType4?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType5?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType6?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType62")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseTimeSerieResultProduct?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseTimeSerieResultProduct2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseSummaryItemProduct?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseSummaryItemProduct2")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType2?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType3?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType32")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType4?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType42")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType5?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType52")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType6?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType62")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetMetaResponseErrorType?), TypeInfoPropertyName = "NullableGetMetaResponseErrorType2_3")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetMetaResponseErrorType2?), TypeInfoPropertyName = "NullableGetMetaResponseErrorType22")] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.AnyOf>))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] internal sealed partial class SourceGenerationContextChunk4 : global::System.Text.Json.Serialization.JsonSerializerContext { } @@ -16780,6 +17160,78 @@ internal sealed partial class SourceGenerationContextChunk4 : global::System.Tex typeof(global::Fal.JsonConverters.GetAssetResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeNullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8NullableJsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9JsonConverter), + + typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9NullableJsonConverter), + typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeJsonConverter), typeof(global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeNullableJsonConverter), @@ -17830,8 +18282,102 @@ internal sealed partial class SourceGenerationContextChunk4 : global::System.Tex typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.OneOfJsonConverter), + + typeof(global::Fal.JsonConverters.AnyOfJsonConverter), + typeof(global::Fal.JsonConverters.UnixTimestampJsonConverter), })] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_8df3f0ff85c28fa0")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_4af0049b8319fe25")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.OneOf?), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_fc90b6f0c4769996")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List>), TypeInfoPropertyName = "GetAssetLineageResponseLineageNodeVariant4_898695ff2bd5345d")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetUsageResponseErrorType4?), TypeInfoPropertyName = "NullableServerlessGetUsageResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetUsageResponseErrorType5?), TypeInfoPropertyName = "NullableServerlessGetUsageResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ServerlessGetUsageResponseErrorType6?), TypeInfoPropertyName = "NullableServerlessGetUsageResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseInstanceInstanceType?), TypeInfoPropertyName = "NullableListComputeInstancesResponseInstanceInstanceType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseInstanceRegion?), TypeInfoPropertyName = "NullableListComputeInstancesResponseInstanceRegion2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseInstanceSector?), TypeInfoPropertyName = "NullableListComputeInstancesResponseInstanceSector2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseInstanceStatus?), TypeInfoPropertyName = "NullableListComputeInstancesResponseInstanceStatus2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseErrorType?), TypeInfoPropertyName = "NullableListComputeInstancesResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseErrorType2?), TypeInfoPropertyName = "NullableListComputeInstancesResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseErrorType3?), TypeInfoPropertyName = "NullableListComputeInstancesResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListComputeInstancesResponseErrorType4?), TypeInfoPropertyName = "NullableListComputeInstancesResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseInstanceType?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseInstanceType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseRegion?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseRegion2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseSector?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseSector2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseStatus?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseStatus2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseErrorType?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseErrorType2?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseErrorType3?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseErrorType4?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateComputeInstanceResponseErrorType5?), TypeInfoPropertyName = "NullableCreateComputeInstanceResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseInstanceType?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseInstanceType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseRegion?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseRegion2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseSector?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseSector2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseStatus?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseStatus2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseErrorType?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseErrorType2?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseErrorType3?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseErrorType4?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetComputeInstanceResponseErrorType5?), TypeInfoPropertyName = "NullableGetComputeInstanceResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteComputeInstanceResponseErrorType?), TypeInfoPropertyName = "NullableDeleteComputeInstanceResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteComputeInstanceResponseErrorType2?), TypeInfoPropertyName = "NullableDeleteComputeInstanceResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteComputeInstanceResponseErrorType3?), TypeInfoPropertyName = "NullableDeleteComputeInstanceResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteComputeInstanceResponseErrorType4?), TypeInfoPropertyName = "NullableDeleteComputeInstanceResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteComputeInstanceResponseErrorType5?), TypeInfoPropertyName = "NullableDeleteComputeInstanceResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListApiKeysResponseKeyScope?), TypeInfoPropertyName = "NullableListApiKeysResponseKeyScope2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListApiKeysResponseErrorType?), TypeInfoPropertyName = "NullableListApiKeysResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListApiKeysResponseErrorType2?), TypeInfoPropertyName = "NullableListApiKeysResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListApiKeysResponseErrorType3?), TypeInfoPropertyName = "NullableListApiKeysResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.ListApiKeysResponseErrorType4?), TypeInfoPropertyName = "NullableListApiKeysResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateApiKeyResponseErrorType?), TypeInfoPropertyName = "NullableCreateApiKeyResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateApiKeyResponseErrorType2?), TypeInfoPropertyName = "NullableCreateApiKeyResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateApiKeyResponseErrorType3?), TypeInfoPropertyName = "NullableCreateApiKeyResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateApiKeyResponseErrorType4?), TypeInfoPropertyName = "NullableCreateApiKeyResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.CreateApiKeyResponseErrorType5?), TypeInfoPropertyName = "NullableCreateApiKeyResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteApiKeyResponseErrorType?), TypeInfoPropertyName = "NullableDeleteApiKeyResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteApiKeyResponseErrorType2?), TypeInfoPropertyName = "NullableDeleteApiKeyResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteApiKeyResponseErrorType3?), TypeInfoPropertyName = "NullableDeleteApiKeyResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.DeleteApiKeyResponseErrorType4?), TypeInfoPropertyName = "NullableDeleteApiKeyResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAccountBillingResponseErrorType?), TypeInfoPropertyName = "NullableGetAccountBillingResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAccountBillingResponseErrorType2?), TypeInfoPropertyName = "NullableGetAccountBillingResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAccountBillingResponseErrorType3?), TypeInfoPropertyName = "NullableGetAccountBillingResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAccountBillingResponseErrorType4?), TypeInfoPropertyName = "NullableGetAccountBillingResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetAccountBillingResponseErrorType5?), TypeInfoPropertyName = "NullableGetAccountBillingResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetFocusReportResponseErrorType?), TypeInfoPropertyName = "NullableGetFocusReportResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetFocusReportResponseErrorType2?), TypeInfoPropertyName = "NullableGetFocusReportResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetFocusReportResponseErrorType3?), TypeInfoPropertyName = "NullableGetFocusReportResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetFocusReportResponseErrorType4?), TypeInfoPropertyName = "NullableGetFocusReportResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetFocusReportResponseErrorType5?), TypeInfoPropertyName = "NullableGetFocusReportResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelAccessControlsResponseErrorType?), TypeInfoPropertyName = "NullableGetModelAccessControlsResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelAccessControlsResponseErrorType2?), TypeInfoPropertyName = "NullableGetModelAccessControlsResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelAccessControlsResponseErrorType3?), TypeInfoPropertyName = "NullableGetModelAccessControlsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetModelAccessControlsResponseErrorType4?), TypeInfoPropertyName = "NullableGetModelAccessControlsResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType2?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType3?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType4?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType5?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationTeamsResponseErrorType6?), TypeInfoPropertyName = "NullableGetOrganizationTeamsResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseTimeSerieResultProduct?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseTimeSerieResultProduct2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseSummaryItemProduct?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseSummaryItemProduct2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType2?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType3?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType32")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType4?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType42")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType5?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType52")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetOrganizationUsageResponseErrorType6?), TypeInfoPropertyName = "NullableGetOrganizationUsageResponseErrorType62")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetMetaResponseErrorType?), TypeInfoPropertyName = "NullableGetMetaResponseErrorType2_3")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.GetMetaResponseErrorType2?), TypeInfoPropertyName = "NullableGetMetaResponseErrorType22")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.AnyOf>))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Fal.AnyOf>))] @@ -17865,6 +18411,8 @@ internal sealed partial class SourceGenerationContextChunk4 : global::System.Tex [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] @@ -18685,6 +19233,42 @@ private SourceGenerationContext(global::System.Text.Json.JsonSerializerOptions o options.Converters.Add(new global::Fal.JsonConverters.GetAssetResponseErrorType8NullableJsonConverter()); options.Converters.Add(new global::Fal.JsonConverters.GetAssetResponseErrorType9JsonConverter()); options.Converters.Add(new global::Fal.JsonConverters.GetAssetResponseErrorType9NullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindNullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeNullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindNullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindNullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindNullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeNullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindNullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeRoleNullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeNullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeNullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType2JsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType2NullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType3JsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType3NullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType4JsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType4NullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType5JsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType5NullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType6JsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType6NullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType7JsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType7NullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType8JsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType8NullableJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType9JsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.GetAssetLineageResponseErrorType9NullableJsonConverter()); options.Converters.Add(new global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeJsonConverter()); options.Converters.Add(new global::Fal.JsonConverters.FavoriteAssetResponseErrorTypeNullableJsonConverter()); options.Converters.Add(new global::Fal.JsonConverters.FavoriteAssetResponseErrorType2JsonConverter()); @@ -19210,6 +19794,8 @@ private SourceGenerationContext(global::System.Text.Json.JsonSerializerOptions o options.Converters.Add(new global::Fal.JsonConverters.AnyOfJsonConverter>()); options.Converters.Add(new global::Fal.JsonConverters.AnyOfJsonConverter()); options.Converters.Add(new global::Fal.JsonConverters.AnyOfJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.OneOfJsonConverter()); + options.Converters.Add(new global::Fal.JsonConverters.AnyOfJsonConverter()); options.Converters.Add(new global::Fal.JsonConverters.UnixTimestampJsonConverter()); return options; diff --git a/src/libs/Fal/Generated/Fal.JsonSerializerContextTypes.g.cs b/src/libs/Fal/Generated/Fal.JsonSerializerContextTypes.g.cs index 0dce3ec..c0380f4 100644 --- a/src/libs/Fal/Generated/Fal.JsonSerializerContextTypes.g.cs +++ b/src/libs/Fal/Generated/Fal.JsonSerializerContextTypes.g.cs @@ -4660,2875 +4660,3063 @@ public sealed partial class JsonSerializerContextTypes /// /// /// - public global::Fal.FavoriteAssetResponse? Type1158 { get; set; } + public global::Fal.GetAssetLineageResponse? Type1158 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponse2? Type1159 { get; set; } + public global::Fal.GetAssetLineageResponseLineage? Type1159 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseError? Type1160 { get; set; } + public global::Fal.GetAssetLineageResponseLineageNodeVariant1? Type1160 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseErrorType? Type1161 { get; set; } + public global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind? Type1161 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponse3? Type1162 { get; set; } + public global::Fal.GetAssetLineageResponseLineageNodeVariant1Type? Type1162 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseError2? Type1163 { get; set; } + public global::Fal.GetAssetLineageResponseLineageNodeVariant2? Type1163 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseErrorType2? Type1164 { get; set; } + public global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind? Type1164 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponse4? Type1165 { get; set; } + public global::Fal.GetAssetLineageResponseLineageNodeVariant3? Type1165 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseError3? Type1166 { get; set; } + public global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind? Type1166 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseErrorType3? Type1167 { get; set; } + public global::Fal.GetAssetLineageResponseLineageNodeVariant4? Type1167 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponse5? Type1168 { get; set; } + public global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind? Type1168 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseError4? Type1169 { get; set; } + public global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType? Type1169 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseErrorType4? Type1170 { get; set; } + public global::System.Collections.Generic.IList? Type1170 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponse6? Type1171 { get; set; } + public global::Fal.GetAssetLineageResponseLineageEdge? Type1171 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseError5? Type1172 { get; set; } + public global::Fal.GetAssetLineageResponseLineageEdgeKind? Type1172 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseErrorType5? Type1173 { get; set; } + public global::Fal.AnyOf? Type1173 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponse7? Type1174 { get; set; } + public global::Fal.GetAssetLineageResponseLineageEdgeRole? Type1174 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseError6? Type1175 { get; set; } + public global::System.Collections.Generic.IList? Type1175 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseErrorType6? Type1176 { get; set; } + public global::Fal.GetAssetLineageResponseLineageEdgeEntitie? Type1176 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponse8? Type1177 { get; set; } + public global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType? Type1177 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseError7? Type1178 { get; set; } + public global::Fal.GetAssetLineageResponse2? Type1178 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseErrorType7? Type1179 { get; set; } + public global::Fal.GetAssetLineageResponseError? Type1179 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponse9? Type1180 { get; set; } + public global::Fal.GetAssetLineageResponseErrorType? Type1180 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseError8? Type1181 { get; set; } + public global::Fal.GetAssetLineageResponse3? Type1181 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseErrorType8? Type1182 { get; set; } + public global::Fal.GetAssetLineageResponseError2? Type1182 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponse10? Type1183 { get; set; } + public global::Fal.GetAssetLineageResponseErrorType2? Type1183 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseError9? Type1184 { get; set; } + public global::Fal.GetAssetLineageResponse4? Type1184 { get; set; } /// /// /// - public global::Fal.FavoriteAssetResponseErrorType9? Type1185 { get; set; } + public global::Fal.GetAssetLineageResponseError3? Type1185 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponse? Type1186 { get; set; } + public global::Fal.GetAssetLineageResponseErrorType3? Type1186 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponse2? Type1187 { get; set; } + public global::Fal.GetAssetLineageResponse5? Type1187 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseError? Type1188 { get; set; } + public global::Fal.GetAssetLineageResponseError4? Type1188 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseErrorType? Type1189 { get; set; } + public global::Fal.GetAssetLineageResponseErrorType4? Type1189 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponse3? Type1190 { get; set; } + public global::Fal.GetAssetLineageResponse6? Type1190 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseError2? Type1191 { get; set; } + public global::Fal.GetAssetLineageResponseError5? Type1191 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseErrorType2? Type1192 { get; set; } + public global::Fal.GetAssetLineageResponseErrorType5? Type1192 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponse4? Type1193 { get; set; } + public global::Fal.GetAssetLineageResponse7? Type1193 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseError3? Type1194 { get; set; } + public global::Fal.GetAssetLineageResponseError6? Type1194 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseErrorType3? Type1195 { get; set; } + public global::Fal.GetAssetLineageResponseErrorType6? Type1195 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponse5? Type1196 { get; set; } + public global::Fal.GetAssetLineageResponse8? Type1196 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseError4? Type1197 { get; set; } + public global::Fal.GetAssetLineageResponseError7? Type1197 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseErrorType4? Type1198 { get; set; } + public global::Fal.GetAssetLineageResponseErrorType7? Type1198 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponse6? Type1199 { get; set; } + public global::Fal.GetAssetLineageResponse9? Type1199 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseError5? Type1200 { get; set; } + public global::Fal.GetAssetLineageResponseError8? Type1200 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseErrorType5? Type1201 { get; set; } + public global::Fal.GetAssetLineageResponseErrorType8? Type1201 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponse7? Type1202 { get; set; } + public global::Fal.GetAssetLineageResponse10? Type1202 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseError6? Type1203 { get; set; } + public global::Fal.GetAssetLineageResponseError9? Type1203 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseErrorType6? Type1204 { get; set; } + public global::Fal.GetAssetLineageResponseErrorType9? Type1204 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponse8? Type1205 { get; set; } + public global::Fal.FavoriteAssetResponse? Type1205 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseError7? Type1206 { get; set; } + public global::Fal.FavoriteAssetResponse2? Type1206 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseErrorType7? Type1207 { get; set; } + public global::Fal.FavoriteAssetResponseError? Type1207 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponse9? Type1208 { get; set; } + public global::Fal.FavoriteAssetResponseErrorType? Type1208 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseError8? Type1209 { get; set; } + public global::Fal.FavoriteAssetResponse3? Type1209 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseErrorType8? Type1210 { get; set; } + public global::Fal.FavoriteAssetResponseError2? Type1210 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponse10? Type1211 { get; set; } + public global::Fal.FavoriteAssetResponseErrorType2? Type1211 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseError9? Type1212 { get; set; } + public global::Fal.FavoriteAssetResponse4? Type1212 { get; set; } /// /// /// - public global::Fal.UnfavoriteAssetResponseErrorType9? Type1213 { get; set; } + public global::Fal.FavoriteAssetResponseError3? Type1213 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponse? Type1214 { get; set; } + public global::Fal.FavoriteAssetResponseErrorType3? Type1214 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1215 { get; set; } + public global::Fal.FavoriteAssetResponse5? Type1215 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseTag? Type1216 { get; set; } + public global::Fal.FavoriteAssetResponseError4? Type1216 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponse2? Type1217 { get; set; } + public global::Fal.FavoriteAssetResponseErrorType4? Type1217 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseError? Type1218 { get; set; } + public global::Fal.FavoriteAssetResponse6? Type1218 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseErrorType? Type1219 { get; set; } + public global::Fal.FavoriteAssetResponseError5? Type1219 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponse3? Type1220 { get; set; } + public global::Fal.FavoriteAssetResponseErrorType5? Type1220 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseError2? Type1221 { get; set; } + public global::Fal.FavoriteAssetResponse7? Type1221 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseErrorType2? Type1222 { get; set; } + public global::Fal.FavoriteAssetResponseError6? Type1222 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponse4? Type1223 { get; set; } + public global::Fal.FavoriteAssetResponseErrorType6? Type1223 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseError3? Type1224 { get; set; } + public global::Fal.FavoriteAssetResponse8? Type1224 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseErrorType3? Type1225 { get; set; } + public global::Fal.FavoriteAssetResponseError7? Type1225 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponse5? Type1226 { get; set; } + public global::Fal.FavoriteAssetResponseErrorType7? Type1226 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseError4? Type1227 { get; set; } + public global::Fal.FavoriteAssetResponse9? Type1227 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseErrorType4? Type1228 { get; set; } + public global::Fal.FavoriteAssetResponseError8? Type1228 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponse6? Type1229 { get; set; } + public global::Fal.FavoriteAssetResponseErrorType8? Type1229 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseError5? Type1230 { get; set; } + public global::Fal.FavoriteAssetResponse10? Type1230 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseErrorType5? Type1231 { get; set; } + public global::Fal.FavoriteAssetResponseError9? Type1231 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponse7? Type1232 { get; set; } + public global::Fal.FavoriteAssetResponseErrorType9? Type1232 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseError6? Type1233 { get; set; } + public global::Fal.UnfavoriteAssetResponse? Type1233 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseErrorType6? Type1234 { get; set; } + public global::Fal.UnfavoriteAssetResponse2? Type1234 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponse8? Type1235 { get; set; } + public global::Fal.UnfavoriteAssetResponseError? Type1235 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseError7? Type1236 { get; set; } + public global::Fal.UnfavoriteAssetResponseErrorType? Type1236 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseErrorType7? Type1237 { get; set; } + public global::Fal.UnfavoriteAssetResponse3? Type1237 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponse9? Type1238 { get; set; } + public global::Fal.UnfavoriteAssetResponseError2? Type1238 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseError8? Type1239 { get; set; } + public global::Fal.UnfavoriteAssetResponseErrorType2? Type1239 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseErrorType8? Type1240 { get; set; } + public global::Fal.UnfavoriteAssetResponse4? Type1240 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponse10? Type1241 { get; set; } + public global::Fal.UnfavoriteAssetResponseError3? Type1241 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseError9? Type1242 { get; set; } + public global::Fal.UnfavoriteAssetResponseErrorType3? Type1242 { get; set; } /// /// /// - public global::Fal.ListAssetTagsForAssetResponseErrorType9? Type1243 { get; set; } + public global::Fal.UnfavoriteAssetResponse5? Type1243 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponse? Type1244 { get; set; } + public global::Fal.UnfavoriteAssetResponseError4? Type1244 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponse2? Type1245 { get; set; } + public global::Fal.UnfavoriteAssetResponseErrorType4? Type1245 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseError? Type1246 { get; set; } + public global::Fal.UnfavoriteAssetResponse6? Type1246 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseErrorType? Type1247 { get; set; } + public global::Fal.UnfavoriteAssetResponseError5? Type1247 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponse3? Type1248 { get; set; } + public global::Fal.UnfavoriteAssetResponseErrorType5? Type1248 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseError2? Type1249 { get; set; } + public global::Fal.UnfavoriteAssetResponse7? Type1249 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseErrorType2? Type1250 { get; set; } + public global::Fal.UnfavoriteAssetResponseError6? Type1250 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponse4? Type1251 { get; set; } + public global::Fal.UnfavoriteAssetResponseErrorType6? Type1251 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseError3? Type1252 { get; set; } + public global::Fal.UnfavoriteAssetResponse8? Type1252 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseErrorType3? Type1253 { get; set; } + public global::Fal.UnfavoriteAssetResponseError7? Type1253 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponse5? Type1254 { get; set; } + public global::Fal.UnfavoriteAssetResponseErrorType7? Type1254 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseError4? Type1255 { get; set; } + public global::Fal.UnfavoriteAssetResponse9? Type1255 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseErrorType4? Type1256 { get; set; } + public global::Fal.UnfavoriteAssetResponseError8? Type1256 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponse6? Type1257 { get; set; } + public global::Fal.UnfavoriteAssetResponseErrorType8? Type1257 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseError5? Type1258 { get; set; } + public global::Fal.UnfavoriteAssetResponse10? Type1258 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseErrorType5? Type1259 { get; set; } + public global::Fal.UnfavoriteAssetResponseError9? Type1259 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponse7? Type1260 { get; set; } + public global::Fal.UnfavoriteAssetResponseErrorType9? Type1260 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseError6? Type1261 { get; set; } + public global::Fal.ListAssetTagsForAssetResponse? Type1261 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseErrorType6? Type1262 { get; set; } + public global::System.Collections.Generic.IList? Type1262 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponse8? Type1263 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseTag? Type1263 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseError7? Type1264 { get; set; } + public global::Fal.ListAssetTagsForAssetResponse2? Type1264 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseErrorType7? Type1265 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseError? Type1265 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponse9? Type1266 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseErrorType? Type1266 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseError8? Type1267 { get; set; } + public global::Fal.ListAssetTagsForAssetResponse3? Type1267 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseErrorType8? Type1268 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseError2? Type1268 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponse10? Type1269 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseErrorType2? Type1269 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseError9? Type1270 { get; set; } + public global::Fal.ListAssetTagsForAssetResponse4? Type1270 { get; set; } /// /// /// - public global::Fal.AssignAssetTagResponseErrorType9? Type1271 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseError3? Type1271 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponse? Type1272 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseErrorType3? Type1272 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseError? Type1273 { get; set; } + public global::Fal.ListAssetTagsForAssetResponse5? Type1273 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseErrorType? Type1274 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseError4? Type1274 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponse2? Type1275 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseErrorType4? Type1275 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseError2? Type1276 { get; set; } + public global::Fal.ListAssetTagsForAssetResponse6? Type1276 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseErrorType2? Type1277 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseError5? Type1277 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponse3? Type1278 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseErrorType5? Type1278 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseError3? Type1279 { get; set; } + public global::Fal.ListAssetTagsForAssetResponse7? Type1279 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseErrorType3? Type1280 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseError6? Type1280 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponse4? Type1281 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseErrorType6? Type1281 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseError4? Type1282 { get; set; } + public global::Fal.ListAssetTagsForAssetResponse8? Type1282 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseErrorType4? Type1283 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseError7? Type1283 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponse5? Type1284 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseErrorType7? Type1284 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseError5? Type1285 { get; set; } + public global::Fal.ListAssetTagsForAssetResponse9? Type1285 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseErrorType5? Type1286 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseError8? Type1286 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponse6? Type1287 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseErrorType8? Type1287 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseError6? Type1288 { get; set; } + public global::Fal.ListAssetTagsForAssetResponse10? Type1288 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseErrorType6? Type1289 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseError9? Type1289 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponse7? Type1290 { get; set; } + public global::Fal.ListAssetTagsForAssetResponseErrorType9? Type1290 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseError7? Type1291 { get; set; } + public global::Fal.AssignAssetTagResponse? Type1291 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseErrorType7? Type1292 { get; set; } + public global::Fal.AssignAssetTagResponse2? Type1292 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponse8? Type1293 { get; set; } + public global::Fal.AssignAssetTagResponseError? Type1293 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseError8? Type1294 { get; set; } + public global::Fal.AssignAssetTagResponseErrorType? Type1294 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseErrorType8? Type1295 { get; set; } + public global::Fal.AssignAssetTagResponse3? Type1295 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponse9? Type1296 { get; set; } + public global::Fal.AssignAssetTagResponseError2? Type1296 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseError9? Type1297 { get; set; } + public global::Fal.AssignAssetTagResponseErrorType2? Type1297 { get; set; } /// /// /// - public global::Fal.UnassignAssetTagResponseErrorType9? Type1298 { get; set; } + public global::Fal.AssignAssetTagResponse4? Type1298 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponse? Type1299 { get; set; } + public global::Fal.AssignAssetTagResponseError3? Type1299 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseDefault? Type1300 { get; set; } + public global::Fal.AssignAssetTagResponseErrorType3? Type1300 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1301 { get; set; } + public global::Fal.AssignAssetTagResponse5? Type1301 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseRule? Type1302 { get; set; } + public global::Fal.AssignAssetTagResponseError4? Type1302 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseRuleDecision? Type1303 { get; set; } + public global::Fal.AssignAssetTagResponseErrorType4? Type1303 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponse2? Type1304 { get; set; } + public global::Fal.AssignAssetTagResponse6? Type1304 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseError? Type1305 { get; set; } + public global::Fal.AssignAssetTagResponseError5? Type1305 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseErrorType? Type1306 { get; set; } + public global::Fal.AssignAssetTagResponseErrorType5? Type1306 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponse3? Type1307 { get; set; } + public global::Fal.AssignAssetTagResponse7? Type1307 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseError2? Type1308 { get; set; } + public global::Fal.AssignAssetTagResponseError6? Type1308 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseErrorType2? Type1309 { get; set; } + public global::Fal.AssignAssetTagResponseErrorType6? Type1309 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponse4? Type1310 { get; set; } + public global::Fal.AssignAssetTagResponse8? Type1310 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseError3? Type1311 { get; set; } + public global::Fal.AssignAssetTagResponseError7? Type1311 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseErrorType3? Type1312 { get; set; } + public global::Fal.AssignAssetTagResponseErrorType7? Type1312 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponse5? Type1313 { get; set; } + public global::Fal.AssignAssetTagResponse9? Type1313 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseError4? Type1314 { get; set; } + public global::Fal.AssignAssetTagResponseError8? Type1314 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseErrorType4? Type1315 { get; set; } + public global::Fal.AssignAssetTagResponseErrorType8? Type1315 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponse6? Type1316 { get; set; } + public global::Fal.AssignAssetTagResponse10? Type1316 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseError5? Type1317 { get; set; } + public global::Fal.AssignAssetTagResponseError9? Type1317 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseErrorType5? Type1318 { get; set; } + public global::Fal.AssignAssetTagResponseErrorType9? Type1318 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponse7? Type1319 { get; set; } + public global::Fal.UnassignAssetTagResponse? Type1319 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseError6? Type1320 { get; set; } + public global::Fal.UnassignAssetTagResponseError? Type1320 { get; set; } /// /// /// - public global::Fal.GetStorageFileAclResponseErrorType6? Type1321 { get; set; } + public global::Fal.UnassignAssetTagResponseErrorType? Type1321 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponse? Type1322 { get; set; } + public global::Fal.UnassignAssetTagResponse2? Type1322 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseDefault? Type1323 { get; set; } + public global::Fal.UnassignAssetTagResponseError2? Type1323 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1324 { get; set; } + public global::Fal.UnassignAssetTagResponseErrorType2? Type1324 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseRule? Type1325 { get; set; } + public global::Fal.UnassignAssetTagResponse3? Type1325 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseRuleDecision? Type1326 { get; set; } + public global::Fal.UnassignAssetTagResponseError3? Type1326 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponse2? Type1327 { get; set; } + public global::Fal.UnassignAssetTagResponseErrorType3? Type1327 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseError? Type1328 { get; set; } + public global::Fal.UnassignAssetTagResponse4? Type1328 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseErrorType? Type1329 { get; set; } + public global::Fal.UnassignAssetTagResponseError4? Type1329 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponse3? Type1330 { get; set; } + public global::Fal.UnassignAssetTagResponseErrorType4? Type1330 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseError2? Type1331 { get; set; } + public global::Fal.UnassignAssetTagResponse5? Type1331 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseErrorType2? Type1332 { get; set; } + public global::Fal.UnassignAssetTagResponseError5? Type1332 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponse4? Type1333 { get; set; } + public global::Fal.UnassignAssetTagResponseErrorType5? Type1333 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseError3? Type1334 { get; set; } + public global::Fal.UnassignAssetTagResponse6? Type1334 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseErrorType3? Type1335 { get; set; } + public global::Fal.UnassignAssetTagResponseError6? Type1335 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponse5? Type1336 { get; set; } + public global::Fal.UnassignAssetTagResponseErrorType6? Type1336 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseError4? Type1337 { get; set; } + public global::Fal.UnassignAssetTagResponse7? Type1337 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseErrorType4? Type1338 { get; set; } + public global::Fal.UnassignAssetTagResponseError7? Type1338 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponse6? Type1339 { get; set; } + public global::Fal.UnassignAssetTagResponseErrorType7? Type1339 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseError5? Type1340 { get; set; } + public global::Fal.UnassignAssetTagResponse8? Type1340 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseErrorType5? Type1341 { get; set; } + public global::Fal.UnassignAssetTagResponseError8? Type1341 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponse7? Type1342 { get; set; } + public global::Fal.UnassignAssetTagResponseErrorType8? Type1342 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseError6? Type1343 { get; set; } + public global::Fal.UnassignAssetTagResponse9? Type1343 { get; set; } /// /// /// - public global::Fal.SetStorageFileAclResponseErrorType6? Type1344 { get; set; } + public global::Fal.UnassignAssetTagResponseError9? Type1344 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponse? Type1345 { get; set; } + public global::Fal.UnassignAssetTagResponseErrorType9? Type1345 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponse2? Type1346 { get; set; } + public global::Fal.GetStorageFileAclResponse? Type1346 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseError? Type1347 { get; set; } + public global::Fal.GetStorageFileAclResponseDefault? Type1347 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseErrorType? Type1348 { get; set; } + public global::System.Collections.Generic.IList? Type1348 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponse3? Type1349 { get; set; } + public global::Fal.GetStorageFileAclResponseRule? Type1349 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseError2? Type1350 { get; set; } + public global::Fal.GetStorageFileAclResponseRuleDecision? Type1350 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseErrorType2? Type1351 { get; set; } + public global::Fal.GetStorageFileAclResponse2? Type1351 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponse4? Type1352 { get; set; } + public global::Fal.GetStorageFileAclResponseError? Type1352 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseError3? Type1353 { get; set; } + public global::Fal.GetStorageFileAclResponseErrorType? Type1353 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseErrorType3? Type1354 { get; set; } + public global::Fal.GetStorageFileAclResponse3? Type1354 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponse5? Type1355 { get; set; } + public global::Fal.GetStorageFileAclResponseError2? Type1355 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseError4? Type1356 { get; set; } + public global::Fal.GetStorageFileAclResponseErrorType2? Type1356 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseErrorType4? Type1357 { get; set; } + public global::Fal.GetStorageFileAclResponse4? Type1357 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponse6? Type1358 { get; set; } + public global::Fal.GetStorageFileAclResponseError3? Type1358 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseError5? Type1359 { get; set; } + public global::Fal.GetStorageFileAclResponseErrorType3? Type1359 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseErrorType5? Type1360 { get; set; } + public global::Fal.GetStorageFileAclResponse5? Type1360 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponse7? Type1361 { get; set; } + public global::Fal.GetStorageFileAclResponseError4? Type1361 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseError6? Type1362 { get; set; } + public global::Fal.GetStorageFileAclResponseErrorType4? Type1362 { get; set; } /// /// /// - public global::Fal.SignStorageFileUrlResponseErrorType6? Type1363 { get; set; } + public global::Fal.GetStorageFileAclResponse6? Type1363 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponse? Type1364 { get; set; } + public global::Fal.GetStorageFileAclResponseError5? Type1364 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseInitialAcl? Type1365 { get; set; } + public global::Fal.GetStorageFileAclResponseErrorType5? Type1365 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseInitialAclDefault? Type1366 { get; set; } + public global::Fal.GetStorageFileAclResponse7? Type1366 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1367 { get; set; } + public global::Fal.GetStorageFileAclResponseError6? Type1367 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseInitialAclRule? Type1368 { get; set; } + public global::Fal.GetStorageFileAclResponseErrorType6? Type1368 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseInitialAclRuleDecision? Type1369 { get; set; } + public global::Fal.SetStorageFileAclResponse? Type1369 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponse2? Type1370 { get; set; } + public global::Fal.SetStorageFileAclResponseDefault? Type1370 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseError? Type1371 { get; set; } + public global::System.Collections.Generic.IList? Type1371 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseErrorType? Type1372 { get; set; } + public global::Fal.SetStorageFileAclResponseRule? Type1372 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponse3? Type1373 { get; set; } + public global::Fal.SetStorageFileAclResponseRuleDecision? Type1373 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseError2? Type1374 { get; set; } + public global::Fal.SetStorageFileAclResponse2? Type1374 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseErrorType2? Type1375 { get; set; } + public global::Fal.SetStorageFileAclResponseError? Type1375 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponse4? Type1376 { get; set; } + public global::Fal.SetStorageFileAclResponseErrorType? Type1376 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseError3? Type1377 { get; set; } + public global::Fal.SetStorageFileAclResponse3? Type1377 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseErrorType3? Type1378 { get; set; } + public global::Fal.SetStorageFileAclResponseError2? Type1378 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponse5? Type1379 { get; set; } + public global::Fal.SetStorageFileAclResponseErrorType2? Type1379 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseError4? Type1380 { get; set; } + public global::Fal.SetStorageFileAclResponse4? Type1380 { get; set; } /// /// /// - public global::Fal.GetStorageSettingsResponseErrorType4? Type1381 { get; set; } + public global::Fal.SetStorageFileAclResponseError3? Type1381 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponse? Type1382 { get; set; } + public global::Fal.SetStorageFileAclResponseErrorType3? Type1382 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseInitialAcl? Type1383 { get; set; } + public global::Fal.SetStorageFileAclResponse5? Type1383 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseInitialAclDefault? Type1384 { get; set; } + public global::Fal.SetStorageFileAclResponseError4? Type1384 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1385 { get; set; } + public global::Fal.SetStorageFileAclResponseErrorType4? Type1385 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseInitialAclRule? Type1386 { get; set; } + public global::Fal.SetStorageFileAclResponse6? Type1386 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseInitialAclRuleDecision? Type1387 { get; set; } + public global::Fal.SetStorageFileAclResponseError5? Type1387 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponse2? Type1388 { get; set; } + public global::Fal.SetStorageFileAclResponseErrorType5? Type1388 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseError? Type1389 { get; set; } + public global::Fal.SetStorageFileAclResponse7? Type1389 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseErrorType? Type1390 { get; set; } + public global::Fal.SetStorageFileAclResponseError6? Type1390 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponse3? Type1391 { get; set; } + public global::Fal.SetStorageFileAclResponseErrorType6? Type1391 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseError2? Type1392 { get; set; } + public global::Fal.SignStorageFileUrlResponse? Type1392 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseErrorType2? Type1393 { get; set; } + public global::Fal.SignStorageFileUrlResponse2? Type1393 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponse4? Type1394 { get; set; } + public global::Fal.SignStorageFileUrlResponseError? Type1394 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseError3? Type1395 { get; set; } + public global::Fal.SignStorageFileUrlResponseErrorType? Type1395 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseErrorType3? Type1396 { get; set; } + public global::Fal.SignStorageFileUrlResponse3? Type1396 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponse5? Type1397 { get; set; } + public global::Fal.SignStorageFileUrlResponseError2? Type1397 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseError4? Type1398 { get; set; } + public global::Fal.SignStorageFileUrlResponseErrorType2? Type1398 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseErrorType4? Type1399 { get; set; } + public global::Fal.SignStorageFileUrlResponse4? Type1399 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponse6? Type1400 { get; set; } + public global::Fal.SignStorageFileUrlResponseError3? Type1400 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseError5? Type1401 { get; set; } + public global::Fal.SignStorageFileUrlResponseErrorType3? Type1401 { get; set; } /// /// /// - public global::Fal.UpdateStorageSettingsResponseErrorType5? Type1402 { get; set; } + public global::Fal.SignStorageFileUrlResponse5? Type1402 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponse? Type1403 { get; set; } + public global::Fal.SignStorageFileUrlResponseError4? Type1403 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1404 { get; set; } + public global::Fal.SignStorageFileUrlResponseErrorType4? Type1404 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseTimeSerie? Type1405 { get; set; } + public global::Fal.SignStorageFileUrlResponse6? Type1405 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1406 { get; set; } + public global::Fal.SignStorageFileUrlResponseError5? Type1406 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseTimeSerieResult? Type1407 { get; set; } + public global::Fal.SignStorageFileUrlResponseErrorType5? Type1407 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1408 { get; set; } + public global::Fal.SignStorageFileUrlResponse7? Type1408 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseSummaryItem? Type1409 { get; set; } + public global::Fal.SignStorageFileUrlResponseError6? Type1409 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponse2? Type1410 { get; set; } + public global::Fal.SignStorageFileUrlResponseErrorType6? Type1410 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseError? Type1411 { get; set; } + public global::Fal.GetStorageSettingsResponse? Type1411 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseErrorType? Type1412 { get; set; } + public global::Fal.GetStorageSettingsResponseInitialAcl? Type1412 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponse3? Type1413 { get; set; } + public global::Fal.GetStorageSettingsResponseInitialAclDefault? Type1413 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseError2? Type1414 { get; set; } + public global::System.Collections.Generic.IList? Type1414 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseErrorType2? Type1415 { get; set; } + public global::Fal.GetStorageSettingsResponseInitialAclRule? Type1415 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponse4? Type1416 { get; set; } + public global::Fal.GetStorageSettingsResponseInitialAclRuleDecision? Type1416 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseError3? Type1417 { get; set; } + public global::Fal.GetStorageSettingsResponse2? Type1417 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseErrorType3? Type1418 { get; set; } + public global::Fal.GetStorageSettingsResponseError? Type1418 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponse5? Type1419 { get; set; } + public global::Fal.GetStorageSettingsResponseErrorType? Type1419 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseError4? Type1420 { get; set; } + public global::Fal.GetStorageSettingsResponse3? Type1420 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseErrorType4? Type1421 { get; set; } + public global::Fal.GetStorageSettingsResponseError2? Type1421 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponse6? Type1422 { get; set; } + public global::Fal.GetStorageSettingsResponseErrorType2? Type1422 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseError5? Type1423 { get; set; } + public global::Fal.GetStorageSettingsResponse4? Type1423 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseErrorType5? Type1424 { get; set; } + public global::Fal.GetStorageSettingsResponseError3? Type1424 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponse7? Type1425 { get; set; } + public global::Fal.GetStorageSettingsResponseErrorType3? Type1425 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseError6? Type1426 { get; set; } + public global::Fal.GetStorageSettingsResponse5? Type1426 { get; set; } /// /// /// - public global::Fal.ServerlessGetAnalyticsResponseErrorType6? Type1427 { get; set; } + public global::Fal.GetStorageSettingsResponseError4? Type1427 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponse? Type1428 { get; set; } + public global::Fal.GetStorageSettingsResponseErrorType4? Type1428 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1429 { get; set; } + public global::Fal.UpdateStorageSettingsResponse? Type1429 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseApp? Type1430 { get; set; } + public global::Fal.UpdateStorageSettingsResponseInitialAcl? Type1430 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseAppAuthMode? Type1431 { get; set; } + public global::Fal.UpdateStorageSettingsResponseInitialAclDefault? Type1431 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponse2? Type1432 { get; set; } + public global::System.Collections.Generic.IList? Type1432 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseError? Type1433 { get; set; } + public global::Fal.UpdateStorageSettingsResponseInitialAclRule? Type1433 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseErrorType? Type1434 { get; set; } + public global::Fal.UpdateStorageSettingsResponseInitialAclRuleDecision? Type1434 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponse3? Type1435 { get; set; } + public global::Fal.UpdateStorageSettingsResponse2? Type1435 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseError2? Type1436 { get; set; } + public global::Fal.UpdateStorageSettingsResponseError? Type1436 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseErrorType2? Type1437 { get; set; } + public global::Fal.UpdateStorageSettingsResponseErrorType? Type1437 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponse4? Type1438 { get; set; } + public global::Fal.UpdateStorageSettingsResponse3? Type1438 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseError3? Type1439 { get; set; } + public global::Fal.UpdateStorageSettingsResponseError2? Type1439 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseErrorType3? Type1440 { get; set; } + public global::Fal.UpdateStorageSettingsResponseErrorType2? Type1440 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponse5? Type1441 { get; set; } + public global::Fal.UpdateStorageSettingsResponse4? Type1441 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseError4? Type1442 { get; set; } + public global::Fal.UpdateStorageSettingsResponseError3? Type1442 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseErrorType4? Type1443 { get; set; } + public global::Fal.UpdateStorageSettingsResponseErrorType3? Type1443 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponse6? Type1444 { get; set; } + public global::Fal.UpdateStorageSettingsResponse5? Type1444 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseError5? Type1445 { get; set; } + public global::Fal.UpdateStorageSettingsResponseError4? Type1445 { get; set; } /// /// /// - public global::Fal.ServerlessListAppsResponseErrorType5? Type1446 { get; set; } + public global::Fal.UpdateStorageSettingsResponseErrorType4? Type1446 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponse? Type1447 { get; set; } + public global::Fal.UpdateStorageSettingsResponse6? Type1447 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponse2? Type1448 { get; set; } + public global::Fal.UpdateStorageSettingsResponseError5? Type1448 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponseError? Type1449 { get; set; } + public global::Fal.UpdateStorageSettingsResponseErrorType5? Type1449 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponseErrorType? Type1450 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponse? Type1450 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponse3? Type1451 { get; set; } + public global::System.Collections.Generic.IList? Type1451 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponseError2? Type1452 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseTimeSerie? Type1452 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponseErrorType2? Type1453 { get; set; } + public global::System.Collections.Generic.IList? Type1453 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponse4? Type1454 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseTimeSerieResult? Type1454 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponseError3? Type1455 { get; set; } + public global::System.Collections.Generic.IList? Type1455 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponseErrorType3? Type1456 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseSummaryItem? Type1456 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponse5? Type1457 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponse2? Type1457 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponseError4? Type1458 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseError? Type1458 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponseErrorType4? Type1459 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseErrorType? Type1459 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponse6? Type1460 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponse3? Type1460 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponseError5? Type1461 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseError2? Type1461 { get; set; } /// /// /// - public global::Fal.ServerlessGetAppQueueInfoResponseErrorType5? Type1462 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseErrorType2? Type1462 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponse? Type1463 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponse4? Type1463 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseError? Type1464 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseError3? Type1464 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseErrorType? Type1465 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseErrorType3? Type1465 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponse2? Type1466 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponse5? Type1466 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseError2? Type1467 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseError4? Type1467 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseErrorType2? Type1468 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseErrorType4? Type1468 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponse3? Type1469 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponse6? Type1469 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseError3? Type1470 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseError5? Type1470 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseErrorType3? Type1471 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseErrorType5? Type1471 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponse4? Type1472 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponse7? Type1472 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseError4? Type1473 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseError6? Type1473 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseErrorType4? Type1474 { get; set; } + public global::Fal.ServerlessGetAnalyticsResponseErrorType6? Type1474 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponse5? Type1475 { get; set; } + public global::Fal.ServerlessListAppsResponse? Type1475 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseError5? Type1476 { get; set; } + public global::System.Collections.Generic.IList? Type1476 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseErrorType5? Type1477 { get; set; } + public global::Fal.ServerlessListAppsResponseApp? Type1477 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponse6? Type1478 { get; set; } + public global::Fal.ServerlessListAppsResponseAppAuthMode? Type1478 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseError6? Type1479 { get; set; } + public global::Fal.ServerlessListAppsResponse2? Type1479 { get; set; } /// /// /// - public global::Fal.ServerlessFlushAppQueueResponseErrorType6? Type1480 { get; set; } + public global::Fal.ServerlessListAppsResponseError? Type1480 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponse? Type1481 { get; set; } + public global::Fal.ServerlessListAppsResponseErrorType? Type1481 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseTimeframe? Type1482 { get; set; } + public global::Fal.ServerlessListAppsResponse3? Type1482 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseAggregation? Type1483 { get; set; } + public global::Fal.ServerlessListAppsResponseError2? Type1483 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1484 { get; set; } + public global::Fal.ServerlessListAppsResponseErrorType2? Type1484 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseHistoryItem? Type1485 { get; set; } + public global::Fal.ServerlessListAppsResponse4? Type1485 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponse2? Type1486 { get; set; } + public global::Fal.ServerlessListAppsResponseError3? Type1486 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseError? Type1487 { get; set; } + public global::Fal.ServerlessListAppsResponseErrorType3? Type1487 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseErrorType? Type1488 { get; set; } + public global::Fal.ServerlessListAppsResponse5? Type1488 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponse3? Type1489 { get; set; } + public global::Fal.ServerlessListAppsResponseError4? Type1489 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseError2? Type1490 { get; set; } + public global::Fal.ServerlessListAppsResponseErrorType4? Type1490 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseErrorType2? Type1491 { get; set; } + public global::Fal.ServerlessListAppsResponse6? Type1491 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponse4? Type1492 { get; set; } + public global::Fal.ServerlessListAppsResponseError5? Type1492 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseError3? Type1493 { get; set; } + public global::Fal.ServerlessListAppsResponseErrorType5? Type1493 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseErrorType3? Type1494 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponse? Type1494 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponse5? Type1495 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponse2? Type1495 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseError4? Type1496 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponseError? Type1496 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseErrorType4? Type1497 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponseErrorType? Type1497 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponse6? Type1498 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponse3? Type1498 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseError5? Type1499 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponseError2? Type1499 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseErrorType5? Type1500 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponseErrorType2? Type1500 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponse7? Type1501 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponse4? Type1501 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseError6? Type1502 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponseError3? Type1502 { get; set; } /// /// /// - public global::Fal.ServerlessGetRunnerHistoryResponseErrorType6? Type1503 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponseErrorType3? Type1503 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponse? Type1504 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponse5? Type1504 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1505 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponseError4? Type1505 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseEvent? Type1506 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponseErrorType4? Type1506 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseEventCategory? Type1507 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponse6? Type1507 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseEventPayload? Type1508 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponseError5? Type1508 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseEventPayloadActor? Type1509 { get; set; } + public global::Fal.ServerlessGetAppQueueInfoResponseErrorType5? Type1509 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponse2? Type1510 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponse? Type1510 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseError? Type1511 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseError? Type1511 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseErrorType? Type1512 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseErrorType? Type1512 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponse3? Type1513 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponse2? Type1513 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseError2? Type1514 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseError2? Type1514 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseErrorType2? Type1515 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseErrorType2? Type1515 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponse4? Type1516 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponse3? Type1516 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseError3? Type1517 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseError3? Type1517 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseErrorType3? Type1518 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseErrorType3? Type1518 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponse5? Type1519 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponse4? Type1519 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseError4? Type1520 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseError4? Type1520 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseErrorType4? Type1521 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseErrorType4? Type1521 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponse6? Type1522 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponse5? Type1522 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseError5? Type1523 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseError5? Type1523 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseErrorType5? Type1524 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseErrorType5? Type1524 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponse7? Type1525 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponse6? Type1525 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseError6? Type1526 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseError6? Type1526 { get; set; } /// /// /// - public global::Fal.ServerlessListAppEventsResponseErrorType6? Type1527 { get; set; } + public global::Fal.ServerlessFlushAppQueueResponseErrorType6? Type1527 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1528 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponse? Type1528 { get; set; } /// /// /// - public global::Fal.ServerlessListRootResponseItem? Type1529 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseTimeframe? Type1529 { get; set; } /// /// /// - public global::Fal.ServerlessListRootResponse? Type1530 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseAggregation? Type1530 { get; set; } /// /// /// - public global::Fal.ServerlessListRootResponseError? Type1531 { get; set; } + public global::System.Collections.Generic.IList? Type1531 { get; set; } /// /// /// - public global::Fal.ServerlessListRootResponseErrorType? Type1532 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseHistoryItem? Type1532 { get; set; } /// /// /// - public global::Fal.ServerlessListRootResponse2? Type1533 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponse2? Type1533 { get; set; } /// /// /// - public global::Fal.ServerlessListRootResponseError2? Type1534 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseError? Type1534 { get; set; } /// /// /// - public global::Fal.ServerlessListRootResponseErrorType2? Type1535 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseErrorType? Type1535 { get; set; } /// /// /// - public global::Fal.ServerlessListRootResponse3? Type1536 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponse3? Type1536 { get; set; } /// /// /// - public global::Fal.ServerlessListRootResponseError3? Type1537 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseError2? Type1537 { get; set; } /// /// /// - public global::Fal.ServerlessListRootResponseErrorType3? Type1538 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseErrorType2? Type1538 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1539 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponse4? Type1539 { get; set; } /// /// /// - public global::Fal.ServerlessListDirectoryResponseItem? Type1540 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseError3? Type1540 { get; set; } /// /// /// - public global::Fal.ServerlessListDirectoryResponse? Type1541 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseErrorType3? Type1541 { get; set; } /// /// /// - public global::Fal.ServerlessListDirectoryResponseError? Type1542 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponse5? Type1542 { get; set; } /// /// /// - public global::Fal.ServerlessListDirectoryResponseErrorType? Type1543 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseError4? Type1543 { get; set; } /// /// /// - public global::Fal.ServerlessListDirectoryResponse2? Type1544 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseErrorType4? Type1544 { get; set; } /// /// /// - public global::Fal.ServerlessListDirectoryResponseError2? Type1545 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponse6? Type1545 { get; set; } /// /// /// - public global::Fal.ServerlessListDirectoryResponseErrorType2? Type1546 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseError5? Type1546 { get; set; } /// /// /// - public global::Fal.ServerlessListDirectoryResponse3? Type1547 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseErrorType5? Type1547 { get; set; } /// /// /// - public global::Fal.ServerlessListDirectoryResponseError3? Type1548 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponse7? Type1548 { get; set; } /// /// /// - public global::Fal.ServerlessListDirectoryResponseErrorType3? Type1549 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseError6? Type1549 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponse2? Type1550 { get; set; } + public global::Fal.ServerlessGetRunnerHistoryResponseErrorType6? Type1550 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponseError? Type1551 { get; set; } + public global::Fal.ServerlessListAppEventsResponse? Type1551 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponseErrorType? Type1552 { get; set; } + public global::System.Collections.Generic.IList? Type1552 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponse3? Type1553 { get; set; } + public global::Fal.ServerlessListAppEventsResponseEvent? Type1553 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponseError2? Type1554 { get; set; } + public global::Fal.ServerlessListAppEventsResponseEventCategory? Type1554 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponseErrorType2? Type1555 { get; set; } + public global::Fal.ServerlessListAppEventsResponseEventPayload? Type1555 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponse4? Type1556 { get; set; } + public global::Fal.ServerlessListAppEventsResponseEventPayloadActor? Type1556 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponseError3? Type1557 { get; set; } + public global::Fal.ServerlessListAppEventsResponse2? Type1557 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponseErrorType3? Type1558 { get; set; } + public global::Fal.ServerlessListAppEventsResponseError? Type1558 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponse5? Type1559 { get; set; } + public global::Fal.ServerlessListAppEventsResponseErrorType? Type1559 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponseError4? Type1560 { get; set; } + public global::Fal.ServerlessListAppEventsResponse3? Type1560 { get; set; } /// /// /// - public global::Fal.ServerlessDownloadFileResponseErrorType4? Type1561 { get; set; } + public global::Fal.ServerlessListAppEventsResponseError2? Type1561 { get; set; } /// /// /// - public global::Fal.ServerlessUploadFromUrlResponse? Type1562 { get; set; } + public global::Fal.ServerlessListAppEventsResponseErrorType2? Type1562 { get; set; } /// /// /// - public global::Fal.ServerlessUploadFromUrlResponseError? Type1563 { get; set; } + public global::Fal.ServerlessListAppEventsResponse4? Type1563 { get; set; } /// /// /// - public global::Fal.ServerlessUploadFromUrlResponseErrorType? Type1564 { get; set; } + public global::Fal.ServerlessListAppEventsResponseError3? Type1564 { get; set; } /// /// /// - public global::Fal.ServerlessUploadFromUrlResponse2? Type1565 { get; set; } + public global::Fal.ServerlessListAppEventsResponseErrorType3? Type1565 { get; set; } /// /// /// - public global::Fal.ServerlessUploadFromUrlResponseError2? Type1566 { get; set; } + public global::Fal.ServerlessListAppEventsResponse5? Type1566 { get; set; } /// /// /// - public global::Fal.ServerlessUploadFromUrlResponseErrorType2? Type1567 { get; set; } + public global::Fal.ServerlessListAppEventsResponseError4? Type1567 { get; set; } /// /// /// - public global::Fal.ServerlessUploadFromUrlResponse3? Type1568 { get; set; } + public global::Fal.ServerlessListAppEventsResponseErrorType4? Type1568 { get; set; } /// /// /// - public global::Fal.ServerlessUploadFromUrlResponseError3? Type1569 { get; set; } + public global::Fal.ServerlessListAppEventsResponse6? Type1569 { get; set; } /// /// /// - public global::Fal.ServerlessUploadFromUrlResponseErrorType3? Type1570 { get; set; } + public global::Fal.ServerlessListAppEventsResponseError5? Type1570 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponse? Type1571 { get; set; } + public global::Fal.ServerlessListAppEventsResponseErrorType5? Type1571 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponseError? Type1572 { get; set; } + public global::Fal.ServerlessListAppEventsResponse7? Type1572 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponseErrorType? Type1573 { get; set; } + public global::Fal.ServerlessListAppEventsResponseError6? Type1573 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponse2? Type1574 { get; set; } + public global::Fal.ServerlessListAppEventsResponseErrorType6? Type1574 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponseError2? Type1575 { get; set; } + public global::System.Collections.Generic.IList? Type1575 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponseErrorType2? Type1576 { get; set; } + public global::Fal.ServerlessListRootResponseItem? Type1576 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponse3? Type1577 { get; set; } + public global::Fal.ServerlessListRootResponse? Type1577 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponseError3? Type1578 { get; set; } + public global::Fal.ServerlessListRootResponseError? Type1578 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponseErrorType3? Type1579 { get; set; } + public global::Fal.ServerlessListRootResponseErrorType? Type1579 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponse4? Type1580 { get; set; } + public global::Fal.ServerlessListRootResponse2? Type1580 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponseError4? Type1581 { get; set; } + public global::Fal.ServerlessListRootResponseError2? Type1581 { get; set; } /// /// /// - public global::Fal.ServerlessUploadLocalFileResponseErrorType4? Type1582 { get; set; } + public global::Fal.ServerlessListRootResponseErrorType2? Type1582 { get; set; } /// /// /// - public global::Fal.ServerlessGetMetricsResponse? Type1583 { get; set; } + public global::Fal.ServerlessListRootResponse3? Type1583 { get; set; } /// /// /// - public global::Fal.ServerlessGetMetricsResponseError? Type1584 { get; set; } + public global::Fal.ServerlessListRootResponseError3? Type1584 { get; set; } /// /// /// - public global::Fal.ServerlessGetMetricsResponseErrorType? Type1585 { get; set; } + public global::Fal.ServerlessListRootResponseErrorType3? Type1585 { get; set; } /// /// /// - public global::Fal.ServerlessGetMetricsResponse2? Type1586 { get; set; } + public global::System.Collections.Generic.IList? Type1586 { get; set; } /// /// /// - public global::Fal.ServerlessGetMetricsResponseError2? Type1587 { get; set; } + public global::Fal.ServerlessListDirectoryResponseItem? Type1587 { get; set; } /// /// /// - public global::Fal.ServerlessGetMetricsResponseErrorType2? Type1588 { get; set; } + public global::Fal.ServerlessListDirectoryResponse? Type1588 { get; set; } /// /// /// - public global::Fal.ServerlessGetMetricsResponse3? Type1589 { get; set; } + public global::Fal.ServerlessListDirectoryResponseError? Type1589 { get; set; } /// /// /// - public global::Fal.ServerlessGetMetricsResponseError3? Type1590 { get; set; } + public global::Fal.ServerlessListDirectoryResponseErrorType? Type1590 { get; set; } /// /// /// - public global::Fal.ServerlessGetMetricsResponseErrorType3? Type1591 { get; set; } + public global::Fal.ServerlessListDirectoryResponse2? Type1591 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponse? Type1592 { get; set; } + public global::Fal.ServerlessListDirectoryResponseError2? Type1592 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1593 { get; set; } + public global::Fal.ServerlessListDirectoryResponseErrorType2? Type1593 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponseItem? Type1594 { get; set; } + public global::Fal.ServerlessListDirectoryResponse3? Type1594 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponse2? Type1595 { get; set; } + public global::Fal.ServerlessListDirectoryResponseError3? Type1595 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponseError? Type1596 { get; set; } + public global::Fal.ServerlessListDirectoryResponseErrorType3? Type1596 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponseErrorType? Type1597 { get; set; } + public global::Fal.ServerlessDownloadFileResponse2? Type1597 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponse3? Type1598 { get; set; } + public global::Fal.ServerlessDownloadFileResponseError? Type1598 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponseError2? Type1599 { get; set; } + public global::Fal.ServerlessDownloadFileResponseErrorType? Type1599 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponseErrorType2? Type1600 { get; set; } + public global::Fal.ServerlessDownloadFileResponse3? Type1600 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponse4? Type1601 { get; set; } + public global::Fal.ServerlessDownloadFileResponseError2? Type1601 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponseError3? Type1602 { get; set; } + public global::Fal.ServerlessDownloadFileResponseErrorType2? Type1602 { get; set; } /// /// /// - public global::Fal.ServerlessLogsHistoryResponseErrorType3? Type1603 { get; set; } + public global::Fal.ServerlessDownloadFileResponse4? Type1603 { get; set; } /// /// /// - public global::Fal.ServerlessLogsStreamResponse2? Type1604 { get; set; } + public global::Fal.ServerlessDownloadFileResponseError3? Type1604 { get; set; } /// /// /// - public global::Fal.ServerlessLogsStreamResponseError? Type1605 { get; set; } + public global::Fal.ServerlessDownloadFileResponseErrorType3? Type1605 { get; set; } /// /// /// - public global::Fal.ServerlessLogsStreamResponseErrorType? Type1606 { get; set; } + public global::Fal.ServerlessDownloadFileResponse5? Type1606 { get; set; } /// /// /// - public global::Fal.ServerlessLogsStreamResponse3? Type1607 { get; set; } + public global::Fal.ServerlessDownloadFileResponseError4? Type1607 { get; set; } /// /// /// - public global::Fal.ServerlessLogsStreamResponseError2? Type1608 { get; set; } + public global::Fal.ServerlessDownloadFileResponseErrorType4? Type1608 { get; set; } /// /// /// - public global::Fal.ServerlessLogsStreamResponseErrorType2? Type1609 { get; set; } + public global::Fal.ServerlessUploadFromUrlResponse? Type1609 { get; set; } /// /// /// - public global::Fal.ServerlessLogsStreamResponse4? Type1610 { get; set; } + public global::Fal.ServerlessUploadFromUrlResponseError? Type1610 { get; set; } /// /// /// - public global::Fal.ServerlessLogsStreamResponseError3? Type1611 { get; set; } + public global::Fal.ServerlessUploadFromUrlResponseErrorType? Type1611 { get; set; } /// /// /// - public global::Fal.ServerlessLogsStreamResponseErrorType3? Type1612 { get; set; } + public global::Fal.ServerlessUploadFromUrlResponse2? Type1612 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponse? Type1613 { get; set; } + public global::Fal.ServerlessUploadFromUrlResponseError2? Type1613 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1614 { get; set; } + public global::Fal.ServerlessUploadFromUrlResponseErrorType2? Type1614 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseItem? Type1615 { get; set; } + public global::Fal.ServerlessUploadFromUrlResponse3? Type1615 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponse2? Type1616 { get; set; } + public global::Fal.ServerlessUploadFromUrlResponseError3? Type1616 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseError? Type1617 { get; set; } + public global::Fal.ServerlessUploadFromUrlResponseErrorType3? Type1617 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseErrorType? Type1618 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponse? Type1618 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponse3? Type1619 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponseError? Type1619 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseError2? Type1620 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponseErrorType? Type1620 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseErrorType2? Type1621 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponse2? Type1621 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponse4? Type1622 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponseError2? Type1622 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseError3? Type1623 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponseErrorType2? Type1623 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseErrorType3? Type1624 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponse3? Type1624 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponse5? Type1625 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponseError3? Type1625 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseError4? Type1626 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponseErrorType3? Type1626 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseErrorType4? Type1627 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponse4? Type1627 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponse6? Type1628 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponseError4? Type1628 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseError5? Type1629 { get; set; } + public global::Fal.ServerlessUploadLocalFileResponseErrorType4? Type1629 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseErrorType5? Type1630 { get; set; } + public global::Fal.ServerlessGetMetricsResponse? Type1630 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponse7? Type1631 { get; set; } + public global::Fal.ServerlessGetMetricsResponseError? Type1631 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseError6? Type1632 { get; set; } + public global::Fal.ServerlessGetMetricsResponseErrorType? Type1632 { get; set; } /// /// /// - public global::Fal.ServerlessListRequestsByEndpointResponseErrorType6? Type1633 { get; set; } + public global::Fal.ServerlessGetMetricsResponse2? Type1633 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponse? Type1634 { get; set; } + public global::Fal.ServerlessGetMetricsResponseError2? Type1634 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1635 { get; set; } + public global::Fal.ServerlessGetMetricsResponseErrorType2? Type1635 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseTimeSerie? Type1636 { get; set; } + public global::Fal.ServerlessGetMetricsResponse3? Type1636 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1637 { get; set; } + public global::Fal.ServerlessGetMetricsResponseError3? Type1637 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseTimeSerieResult? Type1638 { get; set; } + public global::Fal.ServerlessGetMetricsResponseErrorType3? Type1638 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1639 { get; set; } + public global::Fal.ServerlessLogsHistoryResponse? Type1639 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseSummaryItem? Type1640 { get; set; } + public global::System.Collections.Generic.IList? Type1640 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponse2? Type1641 { get; set; } + public global::Fal.ServerlessLogsHistoryResponseItem? Type1641 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseError? Type1642 { get; set; } + public global::Fal.ServerlessLogsHistoryResponse2? Type1642 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseErrorType? Type1643 { get; set; } + public global::Fal.ServerlessLogsHistoryResponseError? Type1643 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponse3? Type1644 { get; set; } + public global::Fal.ServerlessLogsHistoryResponseErrorType? Type1644 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseError2? Type1645 { get; set; } + public global::Fal.ServerlessLogsHistoryResponse3? Type1645 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseErrorType2? Type1646 { get; set; } + public global::Fal.ServerlessLogsHistoryResponseError2? Type1646 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponse4? Type1647 { get; set; } + public global::Fal.ServerlessLogsHistoryResponseErrorType2? Type1647 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseError3? Type1648 { get; set; } + public global::Fal.ServerlessLogsHistoryResponse4? Type1648 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseErrorType3? Type1649 { get; set; } + public global::Fal.ServerlessLogsHistoryResponseError3? Type1649 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponse5? Type1650 { get; set; } + public global::Fal.ServerlessLogsHistoryResponseErrorType3? Type1650 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseError4? Type1651 { get; set; } + public global::Fal.ServerlessLogsStreamResponse2? Type1651 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseErrorType4? Type1652 { get; set; } + public global::Fal.ServerlessLogsStreamResponseError? Type1652 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponse6? Type1653 { get; set; } + public global::Fal.ServerlessLogsStreamResponseErrorType? Type1653 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseError5? Type1654 { get; set; } + public global::Fal.ServerlessLogsStreamResponse3? Type1654 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseErrorType5? Type1655 { get; set; } + public global::Fal.ServerlessLogsStreamResponseError2? Type1655 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponse7? Type1656 { get; set; } + public global::Fal.ServerlessLogsStreamResponseErrorType2? Type1656 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseError6? Type1657 { get; set; } + public global::Fal.ServerlessLogsStreamResponse4? Type1657 { get; set; } /// /// /// - public global::Fal.ServerlessGetUsageResponseErrorType6? Type1658 { get; set; } + public global::Fal.ServerlessLogsStreamResponseError3? Type1658 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponse? Type1659 { get; set; } + public global::Fal.ServerlessLogsStreamResponseErrorType3? Type1659 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1660 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponse? Type1660 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseInstance? Type1661 { get; set; } + public global::System.Collections.Generic.IList? Type1661 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseInstanceInstanceType? Type1662 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseItem? Type1662 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseInstanceRegion? Type1663 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponse2? Type1663 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseInstanceSector? Type1664 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseError? Type1664 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseInstanceStatus? Type1665 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseErrorType? Type1665 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponse2? Type1666 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponse3? Type1666 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseError? Type1667 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseError2? Type1667 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseErrorType? Type1668 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseErrorType2? Type1668 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponse3? Type1669 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponse4? Type1669 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseError2? Type1670 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseError3? Type1670 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseErrorType2? Type1671 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseErrorType3? Type1671 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponse4? Type1672 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponse5? Type1672 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseError3? Type1673 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseError4? Type1673 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseErrorType3? Type1674 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseErrorType4? Type1674 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponse5? Type1675 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponse6? Type1675 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseError4? Type1676 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseError5? Type1676 { get; set; } /// /// /// - public global::Fal.ListComputeInstancesResponseErrorType4? Type1677 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseErrorType5? Type1677 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponse? Type1678 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponse7? Type1678 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseInstanceType? Type1679 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseError6? Type1679 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseRegion? Type1680 { get; set; } + public global::Fal.ServerlessListRequestsByEndpointResponseErrorType6? Type1680 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseSector? Type1681 { get; set; } + public global::Fal.ServerlessGetUsageResponse? Type1681 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseStatus? Type1682 { get; set; } + public global::System.Collections.Generic.IList? Type1682 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponse2? Type1683 { get; set; } + public global::Fal.ServerlessGetUsageResponseTimeSerie? Type1683 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseError? Type1684 { get; set; } + public global::System.Collections.Generic.IList? Type1684 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseErrorType? Type1685 { get; set; } + public global::Fal.ServerlessGetUsageResponseTimeSerieResult? Type1685 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponse3? Type1686 { get; set; } + public global::System.Collections.Generic.IList? Type1686 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseError2? Type1687 { get; set; } + public global::Fal.ServerlessGetUsageResponseSummaryItem? Type1687 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseErrorType2? Type1688 { get; set; } + public global::Fal.ServerlessGetUsageResponse2? Type1688 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponse4? Type1689 { get; set; } + public global::Fal.ServerlessGetUsageResponseError? Type1689 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseError3? Type1690 { get; set; } + public global::Fal.ServerlessGetUsageResponseErrorType? Type1690 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseErrorType3? Type1691 { get; set; } + public global::Fal.ServerlessGetUsageResponse3? Type1691 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponse5? Type1692 { get; set; } + public global::Fal.ServerlessGetUsageResponseError2? Type1692 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseError4? Type1693 { get; set; } + public global::Fal.ServerlessGetUsageResponseErrorType2? Type1693 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseErrorType4? Type1694 { get; set; } + public global::Fal.ServerlessGetUsageResponse4? Type1694 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponse6? Type1695 { get; set; } + public global::Fal.ServerlessGetUsageResponseError3? Type1695 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseError5? Type1696 { get; set; } + public global::Fal.ServerlessGetUsageResponseErrorType3? Type1696 { get; set; } /// /// /// - public global::Fal.CreateComputeInstanceResponseErrorType5? Type1697 { get; set; } + public global::Fal.ServerlessGetUsageResponse5? Type1697 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponse? Type1698 { get; set; } + public global::Fal.ServerlessGetUsageResponseError4? Type1698 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseInstanceType? Type1699 { get; set; } + public global::Fal.ServerlessGetUsageResponseErrorType4? Type1699 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseRegion? Type1700 { get; set; } + public global::Fal.ServerlessGetUsageResponse6? Type1700 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseSector? Type1701 { get; set; } + public global::Fal.ServerlessGetUsageResponseError5? Type1701 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseStatus? Type1702 { get; set; } + public global::Fal.ServerlessGetUsageResponseErrorType5? Type1702 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponse2? Type1703 { get; set; } + public global::Fal.ServerlessGetUsageResponse7? Type1703 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseError? Type1704 { get; set; } + public global::Fal.ServerlessGetUsageResponseError6? Type1704 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseErrorType? Type1705 { get; set; } + public global::Fal.ServerlessGetUsageResponseErrorType6? Type1705 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponse3? Type1706 { get; set; } + public global::Fal.ListComputeInstancesResponse? Type1706 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseError2? Type1707 { get; set; } + public global::System.Collections.Generic.IList? Type1707 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseErrorType2? Type1708 { get; set; } + public global::Fal.ListComputeInstancesResponseInstance? Type1708 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponse4? Type1709 { get; set; } + public global::Fal.ListComputeInstancesResponseInstanceInstanceType? Type1709 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseError3? Type1710 { get; set; } + public global::Fal.ListComputeInstancesResponseInstanceRegion? Type1710 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseErrorType3? Type1711 { get; set; } + public global::Fal.ListComputeInstancesResponseInstanceSector? Type1711 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponse5? Type1712 { get; set; } + public global::Fal.ListComputeInstancesResponseInstanceStatus? Type1712 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseError4? Type1713 { get; set; } + public global::Fal.ListComputeInstancesResponse2? Type1713 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseErrorType4? Type1714 { get; set; } + public global::Fal.ListComputeInstancesResponseError? Type1714 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponse6? Type1715 { get; set; } + public global::Fal.ListComputeInstancesResponseErrorType? Type1715 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseError5? Type1716 { get; set; } + public global::Fal.ListComputeInstancesResponse3? Type1716 { get; set; } /// /// /// - public global::Fal.GetComputeInstanceResponseErrorType5? Type1717 { get; set; } + public global::Fal.ListComputeInstancesResponseError2? Type1717 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponse? Type1718 { get; set; } + public global::Fal.ListComputeInstancesResponseErrorType2? Type1718 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponseError? Type1719 { get; set; } + public global::Fal.ListComputeInstancesResponse4? Type1719 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponseErrorType? Type1720 { get; set; } + public global::Fal.ListComputeInstancesResponseError3? Type1720 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponse2? Type1721 { get; set; } + public global::Fal.ListComputeInstancesResponseErrorType3? Type1721 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponseError2? Type1722 { get; set; } + public global::Fal.ListComputeInstancesResponse5? Type1722 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponseErrorType2? Type1723 { get; set; } + public global::Fal.ListComputeInstancesResponseError4? Type1723 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponse3? Type1724 { get; set; } + public global::Fal.ListComputeInstancesResponseErrorType4? Type1724 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponseError3? Type1725 { get; set; } + public global::Fal.CreateComputeInstanceResponse? Type1725 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponseErrorType3? Type1726 { get; set; } + public global::Fal.CreateComputeInstanceResponseInstanceType? Type1726 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponse4? Type1727 { get; set; } + public global::Fal.CreateComputeInstanceResponseRegion? Type1727 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponseError4? Type1728 { get; set; } + public global::Fal.CreateComputeInstanceResponseSector? Type1728 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponseErrorType4? Type1729 { get; set; } + public global::Fal.CreateComputeInstanceResponseStatus? Type1729 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponse5? Type1730 { get; set; } + public global::Fal.CreateComputeInstanceResponse2? Type1730 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponseError5? Type1731 { get; set; } + public global::Fal.CreateComputeInstanceResponseError? Type1731 { get; set; } /// /// /// - public global::Fal.DeleteComputeInstanceResponseErrorType5? Type1732 { get; set; } + public global::Fal.CreateComputeInstanceResponseErrorType? Type1732 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponse? Type1733 { get; set; } + public global::Fal.CreateComputeInstanceResponse3? Type1733 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1734 { get; set; } + public global::Fal.CreateComputeInstanceResponseError2? Type1734 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponseKey? Type1735 { get; set; } + public global::Fal.CreateComputeInstanceResponseErrorType2? Type1735 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponseKeyScope? Type1736 { get; set; } + public global::Fal.CreateComputeInstanceResponse4? Type1736 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponse2? Type1737 { get; set; } + public global::Fal.CreateComputeInstanceResponseError3? Type1737 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponseError? Type1738 { get; set; } + public global::Fal.CreateComputeInstanceResponseErrorType3? Type1738 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponseErrorType? Type1739 { get; set; } + public global::Fal.CreateComputeInstanceResponse5? Type1739 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponse3? Type1740 { get; set; } + public global::Fal.CreateComputeInstanceResponseError4? Type1740 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponseError2? Type1741 { get; set; } + public global::Fal.CreateComputeInstanceResponseErrorType4? Type1741 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponseErrorType2? Type1742 { get; set; } + public global::Fal.CreateComputeInstanceResponse6? Type1742 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponse4? Type1743 { get; set; } + public global::Fal.CreateComputeInstanceResponseError5? Type1743 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponseError3? Type1744 { get; set; } + public global::Fal.CreateComputeInstanceResponseErrorType5? Type1744 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponseErrorType3? Type1745 { get; set; } + public global::Fal.GetComputeInstanceResponse? Type1745 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponse5? Type1746 { get; set; } + public global::Fal.GetComputeInstanceResponseInstanceType? Type1746 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponseError4? Type1747 { get; set; } + public global::Fal.GetComputeInstanceResponseRegion? Type1747 { get; set; } /// /// /// - public global::Fal.ListApiKeysResponseErrorType4? Type1748 { get; set; } + public global::Fal.GetComputeInstanceResponseSector? Type1748 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponse? Type1749 { get; set; } + public global::Fal.GetComputeInstanceResponseStatus? Type1749 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponse2? Type1750 { get; set; } + public global::Fal.GetComputeInstanceResponse2? Type1750 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponseError? Type1751 { get; set; } + public global::Fal.GetComputeInstanceResponseError? Type1751 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponseErrorType? Type1752 { get; set; } + public global::Fal.GetComputeInstanceResponseErrorType? Type1752 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponse3? Type1753 { get; set; } + public global::Fal.GetComputeInstanceResponse3? Type1753 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponseError2? Type1754 { get; set; } + public global::Fal.GetComputeInstanceResponseError2? Type1754 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponseErrorType2? Type1755 { get; set; } + public global::Fal.GetComputeInstanceResponseErrorType2? Type1755 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponse4? Type1756 { get; set; } + public global::Fal.GetComputeInstanceResponse4? Type1756 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponseError3? Type1757 { get; set; } + public global::Fal.GetComputeInstanceResponseError3? Type1757 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponseErrorType3? Type1758 { get; set; } + public global::Fal.GetComputeInstanceResponseErrorType3? Type1758 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponse5? Type1759 { get; set; } + public global::Fal.GetComputeInstanceResponse5? Type1759 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponseError4? Type1760 { get; set; } + public global::Fal.GetComputeInstanceResponseError4? Type1760 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponseErrorType4? Type1761 { get; set; } + public global::Fal.GetComputeInstanceResponseErrorType4? Type1761 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponse6? Type1762 { get; set; } + public global::Fal.GetComputeInstanceResponse6? Type1762 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponseError5? Type1763 { get; set; } + public global::Fal.GetComputeInstanceResponseError5? Type1763 { get; set; } /// /// /// - public global::Fal.CreateApiKeyResponseErrorType5? Type1764 { get; set; } + public global::Fal.GetComputeInstanceResponseErrorType5? Type1764 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponse? Type1765 { get; set; } + public global::Fal.DeleteComputeInstanceResponse? Type1765 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponseError? Type1766 { get; set; } + public global::Fal.DeleteComputeInstanceResponseError? Type1766 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponseErrorType? Type1767 { get; set; } + public global::Fal.DeleteComputeInstanceResponseErrorType? Type1767 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponse2? Type1768 { get; set; } + public global::Fal.DeleteComputeInstanceResponse2? Type1768 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponseError2? Type1769 { get; set; } + public global::Fal.DeleteComputeInstanceResponseError2? Type1769 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponseErrorType2? Type1770 { get; set; } + public global::Fal.DeleteComputeInstanceResponseErrorType2? Type1770 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponse3? Type1771 { get; set; } + public global::Fal.DeleteComputeInstanceResponse3? Type1771 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponseError3? Type1772 { get; set; } + public global::Fal.DeleteComputeInstanceResponseError3? Type1772 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponseErrorType3? Type1773 { get; set; } + public global::Fal.DeleteComputeInstanceResponseErrorType3? Type1773 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponse4? Type1774 { get; set; } + public global::Fal.DeleteComputeInstanceResponse4? Type1774 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponseError4? Type1775 { get; set; } + public global::Fal.DeleteComputeInstanceResponseError4? Type1775 { get; set; } /// /// /// - public global::Fal.DeleteApiKeyResponseErrorType4? Type1776 { get; set; } + public global::Fal.DeleteComputeInstanceResponseErrorType4? Type1776 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponse? Type1777 { get; set; } + public global::Fal.DeleteComputeInstanceResponse5? Type1777 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseCredits? Type1778 { get; set; } + public global::Fal.DeleteComputeInstanceResponseError5? Type1778 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponse2? Type1779 { get; set; } + public global::Fal.DeleteComputeInstanceResponseErrorType5? Type1779 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseError? Type1780 { get; set; } + public global::Fal.ListApiKeysResponse? Type1780 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseErrorType? Type1781 { get; set; } + public global::System.Collections.Generic.IList? Type1781 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponse3? Type1782 { get; set; } + public global::Fal.ListApiKeysResponseKey? Type1782 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseError2? Type1783 { get; set; } + public global::Fal.ListApiKeysResponseKeyScope? Type1783 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseErrorType2? Type1784 { get; set; } + public global::Fal.ListApiKeysResponse2? Type1784 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponse4? Type1785 { get; set; } + public global::Fal.ListApiKeysResponseError? Type1785 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseError3? Type1786 { get; set; } + public global::Fal.ListApiKeysResponseErrorType? Type1786 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseErrorType3? Type1787 { get; set; } + public global::Fal.ListApiKeysResponse3? Type1787 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponse5? Type1788 { get; set; } + public global::Fal.ListApiKeysResponseError2? Type1788 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseError4? Type1789 { get; set; } + public global::Fal.ListApiKeysResponseErrorType2? Type1789 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseErrorType4? Type1790 { get; set; } + public global::Fal.ListApiKeysResponse4? Type1790 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponse6? Type1791 { get; set; } + public global::Fal.ListApiKeysResponseError3? Type1791 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseError5? Type1792 { get; set; } + public global::Fal.ListApiKeysResponseErrorType3? Type1792 { get; set; } /// /// /// - public global::Fal.GetAccountBillingResponseErrorType5? Type1793 { get; set; } + public global::Fal.ListApiKeysResponse5? Type1793 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponse? Type1794 { get; set; } + public global::Fal.ListApiKeysResponseError4? Type1794 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponseError? Type1795 { get; set; } + public global::Fal.ListApiKeysResponseErrorType4? Type1795 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponseErrorType? Type1796 { get; set; } + public global::Fal.CreateApiKeyResponse? Type1796 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponse2? Type1797 { get; set; } + public global::Fal.CreateApiKeyResponse2? Type1797 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponseError2? Type1798 { get; set; } + public global::Fal.CreateApiKeyResponseError? Type1798 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponseErrorType2? Type1799 { get; set; } + public global::Fal.CreateApiKeyResponseErrorType? Type1799 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponse3? Type1800 { get; set; } + public global::Fal.CreateApiKeyResponse3? Type1800 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponseError3? Type1801 { get; set; } + public global::Fal.CreateApiKeyResponseError2? Type1801 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponseErrorType3? Type1802 { get; set; } + public global::Fal.CreateApiKeyResponseErrorType2? Type1802 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponse4? Type1803 { get; set; } + public global::Fal.CreateApiKeyResponse4? Type1803 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponseError4? Type1804 { get; set; } + public global::Fal.CreateApiKeyResponseError3? Type1804 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponseErrorType4? Type1805 { get; set; } + public global::Fal.CreateApiKeyResponseErrorType3? Type1805 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponse5? Type1806 { get; set; } + public global::Fal.CreateApiKeyResponse5? Type1806 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponseError5? Type1807 { get; set; } + public global::Fal.CreateApiKeyResponseError4? Type1807 { get; set; } /// /// /// - public global::Fal.GetFocusReportResponseErrorType5? Type1808 { get; set; } + public global::Fal.CreateApiKeyResponseErrorType4? Type1808 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponse? Type1809 { get; set; } + public global::Fal.CreateApiKeyResponse6? Type1809 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponseError? Type1810 { get; set; } + public global::Fal.CreateApiKeyResponseError5? Type1810 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponseErrorType? Type1811 { get; set; } + public global::Fal.CreateApiKeyResponseErrorType5? Type1811 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponse2? Type1812 { get; set; } + public global::Fal.DeleteApiKeyResponse? Type1812 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponseError2? Type1813 { get; set; } + public global::Fal.DeleteApiKeyResponseError? Type1813 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponseErrorType2? Type1814 { get; set; } + public global::Fal.DeleteApiKeyResponseErrorType? Type1814 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponse3? Type1815 { get; set; } + public global::Fal.DeleteApiKeyResponse2? Type1815 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponseError3? Type1816 { get; set; } + public global::Fal.DeleteApiKeyResponseError2? Type1816 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponseErrorType3? Type1817 { get; set; } + public global::Fal.DeleteApiKeyResponseErrorType2? Type1817 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponse4? Type1818 { get; set; } + public global::Fal.DeleteApiKeyResponse3? Type1818 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponseError4? Type1819 { get; set; } + public global::Fal.DeleteApiKeyResponseError3? Type1819 { get; set; } /// /// /// - public global::Fal.GetModelAccessControlsResponseErrorType4? Type1820 { get; set; } + public global::Fal.DeleteApiKeyResponseErrorType3? Type1820 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponse? Type1821 { get; set; } + public global::Fal.DeleteApiKeyResponse4? Type1821 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1822 { get; set; } + public global::Fal.DeleteApiKeyResponseError4? Type1822 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseTeam? Type1823 { get; set; } + public global::Fal.DeleteApiKeyResponseErrorType4? Type1823 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponse2? Type1824 { get; set; } + public global::Fal.GetAccountBillingResponse? Type1824 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseError? Type1825 { get; set; } + public global::Fal.GetAccountBillingResponseCredits? Type1825 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseErrorType? Type1826 { get; set; } + public global::Fal.GetAccountBillingResponse2? Type1826 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponse3? Type1827 { get; set; } + public global::Fal.GetAccountBillingResponseError? Type1827 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseError2? Type1828 { get; set; } + public global::Fal.GetAccountBillingResponseErrorType? Type1828 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseErrorType2? Type1829 { get; set; } + public global::Fal.GetAccountBillingResponse3? Type1829 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponse4? Type1830 { get; set; } + public global::Fal.GetAccountBillingResponseError2? Type1830 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseError3? Type1831 { get; set; } + public global::Fal.GetAccountBillingResponseErrorType2? Type1831 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseErrorType3? Type1832 { get; set; } + public global::Fal.GetAccountBillingResponse4? Type1832 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponse5? Type1833 { get; set; } + public global::Fal.GetAccountBillingResponseError3? Type1833 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseError4? Type1834 { get; set; } + public global::Fal.GetAccountBillingResponseErrorType3? Type1834 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseErrorType4? Type1835 { get; set; } + public global::Fal.GetAccountBillingResponse5? Type1835 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponse6? Type1836 { get; set; } + public global::Fal.GetAccountBillingResponseError4? Type1836 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseError5? Type1837 { get; set; } + public global::Fal.GetAccountBillingResponseErrorType4? Type1837 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseErrorType5? Type1838 { get; set; } + public global::Fal.GetAccountBillingResponse6? Type1838 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponse7? Type1839 { get; set; } + public global::Fal.GetAccountBillingResponseError5? Type1839 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseError6? Type1840 { get; set; } + public global::Fal.GetAccountBillingResponseErrorType5? Type1840 { get; set; } /// /// /// - public global::Fal.GetOrganizationTeamsResponseErrorType6? Type1841 { get; set; } + public global::Fal.GetFocusReportResponse? Type1841 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponse? Type1842 { get; set; } + public global::Fal.GetFocusReportResponseError? Type1842 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1843 { get; set; } + public global::Fal.GetFocusReportResponseErrorType? Type1843 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseTimeSerie? Type1844 { get; set; } + public global::Fal.GetFocusReportResponse2? Type1844 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1845 { get; set; } + public global::Fal.GetFocusReportResponseError2? Type1845 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseTimeSerieResult? Type1846 { get; set; } + public global::Fal.GetFocusReportResponseErrorType2? Type1846 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseTimeSerieResultProduct? Type1847 { get; set; } + public global::Fal.GetFocusReportResponse3? Type1847 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type1848 { get; set; } + public global::Fal.GetFocusReportResponseError3? Type1848 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseSummaryItem? Type1849 { get; set; } + public global::Fal.GetFocusReportResponseErrorType3? Type1849 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseSummaryItemProduct? Type1850 { get; set; } + public global::Fal.GetFocusReportResponse4? Type1850 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponse2? Type1851 { get; set; } + public global::Fal.GetFocusReportResponseError4? Type1851 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseError? Type1852 { get; set; } + public global::Fal.GetFocusReportResponseErrorType4? Type1852 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseErrorType? Type1853 { get; set; } + public global::Fal.GetFocusReportResponse5? Type1853 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponse3? Type1854 { get; set; } + public global::Fal.GetFocusReportResponseError5? Type1854 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseError2? Type1855 { get; set; } + public global::Fal.GetFocusReportResponseErrorType5? Type1855 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseErrorType2? Type1856 { get; set; } + public global::Fal.GetModelAccessControlsResponse? Type1856 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponse4? Type1857 { get; set; } + public global::Fal.GetModelAccessControlsResponseError? Type1857 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseError3? Type1858 { get; set; } + public global::Fal.GetModelAccessControlsResponseErrorType? Type1858 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseErrorType3? Type1859 { get; set; } + public global::Fal.GetModelAccessControlsResponse2? Type1859 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponse5? Type1860 { get; set; } + public global::Fal.GetModelAccessControlsResponseError2? Type1860 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseError4? Type1861 { get; set; } + public global::Fal.GetModelAccessControlsResponseErrorType2? Type1861 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseErrorType4? Type1862 { get; set; } + public global::Fal.GetModelAccessControlsResponse3? Type1862 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponse6? Type1863 { get; set; } + public global::Fal.GetModelAccessControlsResponseError3? Type1863 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseError5? Type1864 { get; set; } + public global::Fal.GetModelAccessControlsResponseErrorType3? Type1864 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseErrorType5? Type1865 { get; set; } + public global::Fal.GetModelAccessControlsResponse4? Type1865 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponse7? Type1866 { get; set; } + public global::Fal.GetModelAccessControlsResponseError4? Type1866 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseError6? Type1867 { get; set; } + public global::Fal.GetModelAccessControlsResponseErrorType4? Type1867 { get; set; } /// /// /// - public global::Fal.GetOrganizationUsageResponseErrorType6? Type1868 { get; set; } + public global::Fal.GetOrganizationTeamsResponse? Type1868 { get; set; } /// /// /// - public global::Fal.GetMetaResponse? Type1869 { get; set; } + public global::System.Collections.Generic.IList? Type1869 { get; set; } /// /// /// - public global::Fal.GetMetaResponse2? Type1870 { get; set; } + public global::Fal.GetOrganizationTeamsResponseTeam? Type1870 { get; set; } /// /// /// - public global::Fal.GetMetaResponseError? Type1871 { get; set; } + public global::Fal.GetOrganizationTeamsResponse2? Type1871 { get; set; } /// /// /// - public global::Fal.GetMetaResponseErrorType? Type1872 { get; set; } + public global::Fal.GetOrganizationTeamsResponseError? Type1872 { get; set; } /// /// /// - public global::Fal.GetMetaResponse3? Type1873 { get; set; } + public global::Fal.GetOrganizationTeamsResponseErrorType? Type1873 { get; set; } /// /// /// - public global::Fal.GetMetaResponseError2? Type1874 { get; set; } + public global::Fal.GetOrganizationTeamsResponse3? Type1874 { get; set; } /// /// /// - public global::Fal.GetMetaResponseErrorType2? Type1875 { get; set; } + public global::Fal.GetOrganizationTeamsResponseError2? Type1875 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponseErrorType2? Type1876 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponse4? Type1877 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponseError3? Type1878 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponseErrorType3? Type1879 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponse5? Type1880 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponseError4? Type1881 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponseErrorType4? Type1882 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponse6? Type1883 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponseError5? Type1884 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponseErrorType5? Type1885 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponse7? Type1886 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponseError6? Type1887 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationTeamsResponseErrorType6? Type1888 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponse? Type1889 { get; set; } + /// + /// + /// + public global::System.Collections.Generic.IList? Type1890 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseTimeSerie? Type1891 { get; set; } + /// + /// + /// + public global::System.Collections.Generic.IList? Type1892 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseTimeSerieResult? Type1893 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseTimeSerieResultProduct? Type1894 { get; set; } + /// + /// + /// + public global::System.Collections.Generic.IList? Type1895 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseSummaryItem? Type1896 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseSummaryItemProduct? Type1897 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponse2? Type1898 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseError? Type1899 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseErrorType? Type1900 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponse3? Type1901 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseError2? Type1902 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseErrorType2? Type1903 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponse4? Type1904 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseError3? Type1905 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseErrorType3? Type1906 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponse5? Type1907 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseError4? Type1908 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseErrorType4? Type1909 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponse6? Type1910 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseError5? Type1911 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseErrorType5? Type1912 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponse7? Type1913 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseError6? Type1914 { get; set; } + /// + /// + /// + public global::Fal.GetOrganizationUsageResponseErrorType6? Type1915 { get; set; } + /// + /// + /// + public global::Fal.GetMetaResponse? Type1916 { get; set; } + /// + /// + /// + public global::Fal.GetMetaResponse2? Type1917 { get; set; } + /// + /// + /// + public global::Fal.GetMetaResponseError? Type1918 { get; set; } + /// + /// + /// + public global::Fal.GetMetaResponseErrorType? Type1919 { get; set; } + /// + /// + /// + public global::Fal.GetMetaResponse3? Type1920 { get; set; } + /// + /// + /// + public global::Fal.GetMetaResponseError2? Type1921 { get; set; } + /// + /// + /// + public global::Fal.GetMetaResponseErrorType2? Type1922 { get; set; } /// /// @@ -7697,98 +7885,106 @@ public sealed partial class JsonSerializerContextTypes /// /// /// - public global::System.Collections.Generic.List? ListType41 { get; set; } + public global::System.Collections.Generic.List? ListType41 { get; set; } + /// + /// + /// + public global::System.Collections.Generic.List? ListType42 { get; set; } + /// + /// + /// + public global::System.Collections.Generic.List? ListType43 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType42 { get; set; } + public global::System.Collections.Generic.List? ListType44 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType43 { get; set; } + public global::System.Collections.Generic.List? ListType45 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType44 { get; set; } + public global::System.Collections.Generic.List? ListType46 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType45 { get; set; } + public global::System.Collections.Generic.List? ListType47 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType46 { get; set; } + public global::System.Collections.Generic.List? ListType48 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType47 { get; set; } + public global::System.Collections.Generic.List? ListType49 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType48 { get; set; } + public global::System.Collections.Generic.List? ListType50 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType49 { get; set; } + public global::System.Collections.Generic.List? ListType51 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType50 { get; set; } + public global::System.Collections.Generic.List? ListType52 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType51 { get; set; } + public global::System.Collections.Generic.List? ListType53 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType52 { get; set; } + public global::System.Collections.Generic.List? ListType54 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType53 { get; set; } + public global::System.Collections.Generic.List? ListType55 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType54 { get; set; } + public global::System.Collections.Generic.List? ListType56 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType55 { get; set; } + public global::System.Collections.Generic.List? ListType57 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType56 { get; set; } + public global::System.Collections.Generic.List? ListType58 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType57 { get; set; } + public global::System.Collections.Generic.List? ListType59 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType58 { get; set; } + public global::System.Collections.Generic.List? ListType60 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType59 { get; set; } + public global::System.Collections.Generic.List? ListType61 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType60 { get; set; } + public global::System.Collections.Generic.List? ListType62 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType61 { get; set; } + public global::System.Collections.Generic.List? ListType63 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType62 { get; set; } + public global::System.Collections.Generic.List? ListType64 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType63 { get; set; } + public global::System.Collections.Generic.List? ListType65 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType64 { get; set; } + public global::System.Collections.Generic.List? ListType66 { get; set; } } } \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse.Json.g.cs new file mode 100644 index 0000000..7f9ad56 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponse + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponse), + jsonSerializerContext) as global::Fal.GetAssetLineageResponse; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponse? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponse), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponse; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse.g.cs new file mode 100644 index 0000000..dda659c --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Asset lineage response + /// + public sealed partial class GetAssetLineageResponse + { + /// + /// Derivation lineage graph of the asset + /// + [global::System.Text.Json.Serialization.JsonPropertyName("lineage")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseLineage Lineage { 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. + /// + /// + /// Derivation lineage graph of the asset + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponse( + global::Fal.GetAssetLineageResponseLineage lineage) + { + this.Lineage = lineage ?? throw new global::System.ArgumentNullException(nameof(lineage)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponse() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse10.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse10.Json.g.cs new file mode 100644 index 0000000..af5b65b --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse10.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponse10 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse10? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponse10), + jsonSerializerContext) as global::Fal.GetAssetLineageResponse10; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse10? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponse10? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponse10), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponse10; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse10.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse10.g.cs new file mode 100644 index 0000000..3bba1cd --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse10.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Standard error response format + /// + public sealed partial class GetAssetLineageResponse10 + { + /// + /// Error details + /// + [global::System.Text.Json.Serialization.JsonPropertyName("error")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseError9 Error { 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. + /// + /// + /// Error details + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponse10( + global::Fal.GetAssetLineageResponseError9 error) + { + this.Error = error ?? throw new global::System.ArgumentNullException(nameof(error)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponse10() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse2.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse2.Json.g.cs new file mode 100644 index 0000000..31ce59d --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse2.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponse2 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse2? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponse2), + jsonSerializerContext) as global::Fal.GetAssetLineageResponse2; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse2? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponse2? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponse2), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponse2; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse2.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse2.g.cs new file mode 100644 index 0000000..86468b6 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse2.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Standard error response format + /// + public sealed partial class GetAssetLineageResponse2 + { + /// + /// Error details + /// + [global::System.Text.Json.Serialization.JsonPropertyName("error")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseError Error { 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. + /// + /// + /// Error details + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponse2( + global::Fal.GetAssetLineageResponseError error) + { + this.Error = error ?? throw new global::System.ArgumentNullException(nameof(error)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponse2() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse3.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse3.Json.g.cs new file mode 100644 index 0000000..0a16f03 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse3.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponse3 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse3? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponse3), + jsonSerializerContext) as global::Fal.GetAssetLineageResponse3; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse3? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponse3? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponse3), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponse3; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse3.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse3.g.cs new file mode 100644 index 0000000..92f2856 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse3.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Standard error response format + /// + public sealed partial class GetAssetLineageResponse3 + { + /// + /// Error details + /// + [global::System.Text.Json.Serialization.JsonPropertyName("error")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseError2 Error { 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. + /// + /// + /// Error details + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponse3( + global::Fal.GetAssetLineageResponseError2 error) + { + this.Error = error ?? throw new global::System.ArgumentNullException(nameof(error)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponse3() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse4.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse4.Json.g.cs new file mode 100644 index 0000000..10d2973 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse4.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponse4 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse4? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponse4), + jsonSerializerContext) as global::Fal.GetAssetLineageResponse4; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse4? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponse4? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponse4), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponse4; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse4.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse4.g.cs new file mode 100644 index 0000000..35d5a57 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse4.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Standard error response format + /// + public sealed partial class GetAssetLineageResponse4 + { + /// + /// Error details + /// + [global::System.Text.Json.Serialization.JsonPropertyName("error")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseError3 Error { 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. + /// + /// + /// Error details + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponse4( + global::Fal.GetAssetLineageResponseError3 error) + { + this.Error = error ?? throw new global::System.ArgumentNullException(nameof(error)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponse4() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse5.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse5.Json.g.cs new file mode 100644 index 0000000..54f5619 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse5.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponse5 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse5? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponse5), + jsonSerializerContext) as global::Fal.GetAssetLineageResponse5; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse5? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponse5? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponse5), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponse5; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse5.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse5.g.cs new file mode 100644 index 0000000..eb7aa78 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse5.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Standard error response format + /// + public sealed partial class GetAssetLineageResponse5 + { + /// + /// Error details + /// + [global::System.Text.Json.Serialization.JsonPropertyName("error")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseError4 Error { 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. + /// + /// + /// Error details + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponse5( + global::Fal.GetAssetLineageResponseError4 error) + { + this.Error = error ?? throw new global::System.ArgumentNullException(nameof(error)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponse5() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse6.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse6.Json.g.cs new file mode 100644 index 0000000..9804496 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse6.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponse6 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse6? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponse6), + jsonSerializerContext) as global::Fal.GetAssetLineageResponse6; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse6? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponse6? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponse6), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponse6; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse6.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse6.g.cs new file mode 100644 index 0000000..55d4d8f --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse6.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Standard error response format + /// + public sealed partial class GetAssetLineageResponse6 + { + /// + /// Error details + /// + [global::System.Text.Json.Serialization.JsonPropertyName("error")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseError5 Error { 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. + /// + /// + /// Error details + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponse6( + global::Fal.GetAssetLineageResponseError5 error) + { + this.Error = error ?? throw new global::System.ArgumentNullException(nameof(error)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponse6() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse7.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse7.Json.g.cs new file mode 100644 index 0000000..d42f0b2 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse7.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponse7 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse7? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponse7), + jsonSerializerContext) as global::Fal.GetAssetLineageResponse7; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse7? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponse7? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponse7), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponse7; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse7.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse7.g.cs new file mode 100644 index 0000000..a2509fd --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse7.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Standard error response format + /// + public sealed partial class GetAssetLineageResponse7 + { + /// + /// Error details + /// + [global::System.Text.Json.Serialization.JsonPropertyName("error")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseError6 Error { 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. + /// + /// + /// Error details + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponse7( + global::Fal.GetAssetLineageResponseError6 error) + { + this.Error = error ?? throw new global::System.ArgumentNullException(nameof(error)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponse7() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse8.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse8.Json.g.cs new file mode 100644 index 0000000..d60df05 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse8.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponse8 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse8? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponse8), + jsonSerializerContext) as global::Fal.GetAssetLineageResponse8; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse8? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponse8? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponse8), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponse8; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse8.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse8.g.cs new file mode 100644 index 0000000..ff3060c --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse8.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Standard error response format + /// + public sealed partial class GetAssetLineageResponse8 + { + /// + /// Error details + /// + [global::System.Text.Json.Serialization.JsonPropertyName("error")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseError7 Error { 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. + /// + /// + /// Error details + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponse8( + global::Fal.GetAssetLineageResponseError7 error) + { + this.Error = error ?? throw new global::System.ArgumentNullException(nameof(error)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponse8() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse9.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse9.Json.g.cs new file mode 100644 index 0000000..91cb7da --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse9.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponse9 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse9? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponse9), + jsonSerializerContext) as global::Fal.GetAssetLineageResponse9; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponse9? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponse9? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponse9), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponse9; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse9.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse9.g.cs new file mode 100644 index 0000000..5017b17 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponse9.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Standard error response format + /// + public sealed partial class GetAssetLineageResponse9 + { + /// + /// Error details + /// + [global::System.Text.Json.Serialization.JsonPropertyName("error")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseError8 Error { 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. + /// + /// + /// Error details + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponse9( + global::Fal.GetAssetLineageResponseError8 error) + { + this.Error = error ?? throw new global::System.ArgumentNullException(nameof(error)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponse9() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError.Json.g.cs new file mode 100644 index 0000000..13165ba --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseError + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseError), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseError; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseError? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseError), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseError; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError.g.cs new file mode 100644 index 0000000..ce86157 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError.g.cs @@ -0,0 +1,82 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Error details + /// + public sealed partial class GetAssetLineageResponseError + { + /// + /// The category of error that occurred + /// + [global::System.Text.Json.Serialization.JsonPropertyName("type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorTypeJsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseErrorType Type { get; set; } + + /// + /// Human-readable error message + /// + [global::System.Text.Json.Serialization.JsonPropertyName("message")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Message { get; set; } + + /// + /// Link to relevant documentation + /// + [global::System.Text.Json.Serialization.JsonPropertyName("docs_url")] + public string? DocsUrl { get; set; } + + /// + /// Unique request identifier for debugging + /// + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + public string? RequestId { 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 category of error that occurred + /// + /// + /// Human-readable error message + /// + /// + /// Link to relevant documentation + /// + /// + /// Unique request identifier for debugging + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseError( + global::Fal.GetAssetLineageResponseErrorType type, + string message, + string? docsUrl, + string? requestId) + { + this.Type = type; + this.Message = message ?? throw new global::System.ArgumentNullException(nameof(message)); + this.DocsUrl = docsUrl; + this.RequestId = requestId; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseError() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError2.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError2.Json.g.cs new file mode 100644 index 0000000..d37e71c --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError2.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseError2 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError2? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseError2), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseError2; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError2? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseError2? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseError2), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseError2; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError2.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError2.g.cs new file mode 100644 index 0000000..3d30ac5 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError2.g.cs @@ -0,0 +1,82 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Error details + /// + public sealed partial class GetAssetLineageResponseError2 + { + /// + /// The category of error that occurred + /// + [global::System.Text.Json.Serialization.JsonPropertyName("type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType2JsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseErrorType2 Type { get; set; } + + /// + /// Human-readable error message + /// + [global::System.Text.Json.Serialization.JsonPropertyName("message")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Message { get; set; } + + /// + /// Link to relevant documentation + /// + [global::System.Text.Json.Serialization.JsonPropertyName("docs_url")] + public string? DocsUrl { get; set; } + + /// + /// Unique request identifier for debugging + /// + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + public string? RequestId { 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 category of error that occurred + /// + /// + /// Human-readable error message + /// + /// + /// Link to relevant documentation + /// + /// + /// Unique request identifier for debugging + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseError2( + global::Fal.GetAssetLineageResponseErrorType2 type, + string message, + string? docsUrl, + string? requestId) + { + this.Type = type; + this.Message = message ?? throw new global::System.ArgumentNullException(nameof(message)); + this.DocsUrl = docsUrl; + this.RequestId = requestId; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseError2() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError3.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError3.Json.g.cs new file mode 100644 index 0000000..feb8d7a --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError3.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseError3 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError3? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseError3), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseError3; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError3? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseError3? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseError3), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseError3; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError3.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError3.g.cs new file mode 100644 index 0000000..59894c2 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError3.g.cs @@ -0,0 +1,82 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Error details + /// + public sealed partial class GetAssetLineageResponseError3 + { + /// + /// The category of error that occurred + /// + [global::System.Text.Json.Serialization.JsonPropertyName("type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType3JsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseErrorType3 Type { get; set; } + + /// + /// Human-readable error message + /// + [global::System.Text.Json.Serialization.JsonPropertyName("message")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Message { get; set; } + + /// + /// Link to relevant documentation + /// + [global::System.Text.Json.Serialization.JsonPropertyName("docs_url")] + public string? DocsUrl { get; set; } + + /// + /// Unique request identifier for debugging + /// + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + public string? RequestId { 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 category of error that occurred + /// + /// + /// Human-readable error message + /// + /// + /// Link to relevant documentation + /// + /// + /// Unique request identifier for debugging + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseError3( + global::Fal.GetAssetLineageResponseErrorType3 type, + string message, + string? docsUrl, + string? requestId) + { + this.Type = type; + this.Message = message ?? throw new global::System.ArgumentNullException(nameof(message)); + this.DocsUrl = docsUrl; + this.RequestId = requestId; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseError3() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError4.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError4.Json.g.cs new file mode 100644 index 0000000..3c4eb4b --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError4.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseError4 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError4? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseError4), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseError4; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError4? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseError4? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseError4), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseError4; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError4.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError4.g.cs new file mode 100644 index 0000000..d7942b7 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError4.g.cs @@ -0,0 +1,82 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Error details + /// + public sealed partial class GetAssetLineageResponseError4 + { + /// + /// The category of error that occurred + /// + [global::System.Text.Json.Serialization.JsonPropertyName("type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType4JsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseErrorType4 Type { get; set; } + + /// + /// Human-readable error message + /// + [global::System.Text.Json.Serialization.JsonPropertyName("message")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Message { get; set; } + + /// + /// Link to relevant documentation + /// + [global::System.Text.Json.Serialization.JsonPropertyName("docs_url")] + public string? DocsUrl { get; set; } + + /// + /// Unique request identifier for debugging + /// + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + public string? RequestId { 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 category of error that occurred + /// + /// + /// Human-readable error message + /// + /// + /// Link to relevant documentation + /// + /// + /// Unique request identifier for debugging + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseError4( + global::Fal.GetAssetLineageResponseErrorType4 type, + string message, + string? docsUrl, + string? requestId) + { + this.Type = type; + this.Message = message ?? throw new global::System.ArgumentNullException(nameof(message)); + this.DocsUrl = docsUrl; + this.RequestId = requestId; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseError4() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError5.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError5.Json.g.cs new file mode 100644 index 0000000..3ff5eac --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError5.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseError5 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError5? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseError5), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseError5; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError5? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseError5? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseError5), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseError5; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError5.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError5.g.cs new file mode 100644 index 0000000..03e7de1 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError5.g.cs @@ -0,0 +1,82 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Error details + /// + public sealed partial class GetAssetLineageResponseError5 + { + /// + /// The category of error that occurred + /// + [global::System.Text.Json.Serialization.JsonPropertyName("type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType5JsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseErrorType5 Type { get; set; } + + /// + /// Human-readable error message + /// + [global::System.Text.Json.Serialization.JsonPropertyName("message")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Message { get; set; } + + /// + /// Link to relevant documentation + /// + [global::System.Text.Json.Serialization.JsonPropertyName("docs_url")] + public string? DocsUrl { get; set; } + + /// + /// Unique request identifier for debugging + /// + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + public string? RequestId { 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 category of error that occurred + /// + /// + /// Human-readable error message + /// + /// + /// Link to relevant documentation + /// + /// + /// Unique request identifier for debugging + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseError5( + global::Fal.GetAssetLineageResponseErrorType5 type, + string message, + string? docsUrl, + string? requestId) + { + this.Type = type; + this.Message = message ?? throw new global::System.ArgumentNullException(nameof(message)); + this.DocsUrl = docsUrl; + this.RequestId = requestId; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseError5() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError6.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError6.Json.g.cs new file mode 100644 index 0000000..0d76c53 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError6.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseError6 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError6? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseError6), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseError6; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError6? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseError6? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseError6), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseError6; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError6.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError6.g.cs new file mode 100644 index 0000000..3d25a41 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError6.g.cs @@ -0,0 +1,82 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Error details + /// + public sealed partial class GetAssetLineageResponseError6 + { + /// + /// The category of error that occurred + /// + [global::System.Text.Json.Serialization.JsonPropertyName("type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType6JsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseErrorType6 Type { get; set; } + + /// + /// Human-readable error message + /// + [global::System.Text.Json.Serialization.JsonPropertyName("message")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Message { get; set; } + + /// + /// Link to relevant documentation + /// + [global::System.Text.Json.Serialization.JsonPropertyName("docs_url")] + public string? DocsUrl { get; set; } + + /// + /// Unique request identifier for debugging + /// + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + public string? RequestId { 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 category of error that occurred + /// + /// + /// Human-readable error message + /// + /// + /// Link to relevant documentation + /// + /// + /// Unique request identifier for debugging + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseError6( + global::Fal.GetAssetLineageResponseErrorType6 type, + string message, + string? docsUrl, + string? requestId) + { + this.Type = type; + this.Message = message ?? throw new global::System.ArgumentNullException(nameof(message)); + this.DocsUrl = docsUrl; + this.RequestId = requestId; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseError6() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError7.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError7.Json.g.cs new file mode 100644 index 0000000..baa8106 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError7.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseError7 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError7? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseError7), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseError7; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError7? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseError7? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseError7), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseError7; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError7.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError7.g.cs new file mode 100644 index 0000000..9d93e12 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError7.g.cs @@ -0,0 +1,82 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Error details + /// + public sealed partial class GetAssetLineageResponseError7 + { + /// + /// The category of error that occurred + /// + [global::System.Text.Json.Serialization.JsonPropertyName("type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType7JsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseErrorType7 Type { get; set; } + + /// + /// Human-readable error message + /// + [global::System.Text.Json.Serialization.JsonPropertyName("message")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Message { get; set; } + + /// + /// Link to relevant documentation + /// + [global::System.Text.Json.Serialization.JsonPropertyName("docs_url")] + public string? DocsUrl { get; set; } + + /// + /// Unique request identifier for debugging + /// + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + public string? RequestId { 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 category of error that occurred + /// + /// + /// Human-readable error message + /// + /// + /// Link to relevant documentation + /// + /// + /// Unique request identifier for debugging + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseError7( + global::Fal.GetAssetLineageResponseErrorType7 type, + string message, + string? docsUrl, + string? requestId) + { + this.Type = type; + this.Message = message ?? throw new global::System.ArgumentNullException(nameof(message)); + this.DocsUrl = docsUrl; + this.RequestId = requestId; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseError7() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError8.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError8.Json.g.cs new file mode 100644 index 0000000..4daea08 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError8.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseError8 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError8? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseError8), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseError8; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError8? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseError8? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseError8), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseError8; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError8.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError8.g.cs new file mode 100644 index 0000000..eeae6fb --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError8.g.cs @@ -0,0 +1,82 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Error details + /// + public sealed partial class GetAssetLineageResponseError8 + { + /// + /// The category of error that occurred + /// + [global::System.Text.Json.Serialization.JsonPropertyName("type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType8JsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseErrorType8 Type { get; set; } + + /// + /// Human-readable error message + /// + [global::System.Text.Json.Serialization.JsonPropertyName("message")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Message { get; set; } + + /// + /// Link to relevant documentation + /// + [global::System.Text.Json.Serialization.JsonPropertyName("docs_url")] + public string? DocsUrl { get; set; } + + /// + /// Unique request identifier for debugging + /// + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + public string? RequestId { 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 category of error that occurred + /// + /// + /// Human-readable error message + /// + /// + /// Link to relevant documentation + /// + /// + /// Unique request identifier for debugging + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseError8( + global::Fal.GetAssetLineageResponseErrorType8 type, + string message, + string? docsUrl, + string? requestId) + { + this.Type = type; + this.Message = message ?? throw new global::System.ArgumentNullException(nameof(message)); + this.DocsUrl = docsUrl; + this.RequestId = requestId; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseError8() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError9.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError9.Json.g.cs new file mode 100644 index 0000000..7398af4 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError9.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseError9 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError9? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseError9), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseError9; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseError9? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseError9? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseError9), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseError9; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError9.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError9.g.cs new file mode 100644 index 0000000..f25f61c --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseError9.g.cs @@ -0,0 +1,82 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Error details + /// + public sealed partial class GetAssetLineageResponseError9 + { + /// + /// The category of error that occurred + /// + [global::System.Text.Json.Serialization.JsonPropertyName("type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseErrorType9JsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseErrorType9 Type { get; set; } + + /// + /// Human-readable error message + /// + [global::System.Text.Json.Serialization.JsonPropertyName("message")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Message { get; set; } + + /// + /// Link to relevant documentation + /// + [global::System.Text.Json.Serialization.JsonPropertyName("docs_url")] + public string? DocsUrl { get; set; } + + /// + /// Unique request identifier for debugging + /// + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + public string? RequestId { 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 category of error that occurred + /// + /// + /// Human-readable error message + /// + /// + /// Link to relevant documentation + /// + /// + /// Unique request identifier for debugging + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseError9( + global::Fal.GetAssetLineageResponseErrorType9 type, + string message, + string? docsUrl, + string? requestId) + { + this.Type = type; + this.Message = message ?? throw new global::System.ArgumentNullException(nameof(message)); + this.DocsUrl = docsUrl; + this.RequestId = requestId; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseError9() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType.g.cs new file mode 100644 index 0000000..a2d10a1 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType.g.cs @@ -0,0 +1,75 @@ + +#nullable enable + +namespace Fal +{ + /// + /// The category of error that occurred + /// + public enum GetAssetLineageResponseErrorType + { + /// + /// + /// + AuthorizationError, + /// + /// + /// + NotFound, + /// + /// + /// + NotImplemented, + /// + /// + /// + RateLimited, + /// + /// + /// + ServerError, + /// + /// + /// + ValidationError, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseErrorTypeExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseErrorType value) + { + return value switch + { + GetAssetLineageResponseErrorType.AuthorizationError => "authorization_error", + GetAssetLineageResponseErrorType.NotFound => "not_found", + GetAssetLineageResponseErrorType.NotImplemented => "not_implemented", + GetAssetLineageResponseErrorType.RateLimited => "rate_limited", + GetAssetLineageResponseErrorType.ServerError => "server_error", + GetAssetLineageResponseErrorType.ValidationError => "validation_error", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseErrorType? ToEnum(string value) + { + return value switch + { + "authorization_error" => GetAssetLineageResponseErrorType.AuthorizationError, + "not_found" => GetAssetLineageResponseErrorType.NotFound, + "not_implemented" => GetAssetLineageResponseErrorType.NotImplemented, + "rate_limited" => GetAssetLineageResponseErrorType.RateLimited, + "server_error" => GetAssetLineageResponseErrorType.ServerError, + "validation_error" => GetAssetLineageResponseErrorType.ValidationError, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType2.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType2.g.cs new file mode 100644 index 0000000..5ea45c8 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType2.g.cs @@ -0,0 +1,75 @@ + +#nullable enable + +namespace Fal +{ + /// + /// The category of error that occurred + /// + public enum GetAssetLineageResponseErrorType2 + { + /// + /// + /// + AuthorizationError, + /// + /// + /// + NotFound, + /// + /// + /// + NotImplemented, + /// + /// + /// + RateLimited, + /// + /// + /// + ServerError, + /// + /// + /// + ValidationError, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseErrorType2Extensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseErrorType2 value) + { + return value switch + { + GetAssetLineageResponseErrorType2.AuthorizationError => "authorization_error", + GetAssetLineageResponseErrorType2.NotFound => "not_found", + GetAssetLineageResponseErrorType2.NotImplemented => "not_implemented", + GetAssetLineageResponseErrorType2.RateLimited => "rate_limited", + GetAssetLineageResponseErrorType2.ServerError => "server_error", + GetAssetLineageResponseErrorType2.ValidationError => "validation_error", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseErrorType2? ToEnum(string value) + { + return value switch + { + "authorization_error" => GetAssetLineageResponseErrorType2.AuthorizationError, + "not_found" => GetAssetLineageResponseErrorType2.NotFound, + "not_implemented" => GetAssetLineageResponseErrorType2.NotImplemented, + "rate_limited" => GetAssetLineageResponseErrorType2.RateLimited, + "server_error" => GetAssetLineageResponseErrorType2.ServerError, + "validation_error" => GetAssetLineageResponseErrorType2.ValidationError, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType3.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType3.g.cs new file mode 100644 index 0000000..2b7ef22 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType3.g.cs @@ -0,0 +1,75 @@ + +#nullable enable + +namespace Fal +{ + /// + /// The category of error that occurred + /// + public enum GetAssetLineageResponseErrorType3 + { + /// + /// + /// + AuthorizationError, + /// + /// + /// + NotFound, + /// + /// + /// + NotImplemented, + /// + /// + /// + RateLimited, + /// + /// + /// + ServerError, + /// + /// + /// + ValidationError, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseErrorType3Extensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseErrorType3 value) + { + return value switch + { + GetAssetLineageResponseErrorType3.AuthorizationError => "authorization_error", + GetAssetLineageResponseErrorType3.NotFound => "not_found", + GetAssetLineageResponseErrorType3.NotImplemented => "not_implemented", + GetAssetLineageResponseErrorType3.RateLimited => "rate_limited", + GetAssetLineageResponseErrorType3.ServerError => "server_error", + GetAssetLineageResponseErrorType3.ValidationError => "validation_error", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseErrorType3? ToEnum(string value) + { + return value switch + { + "authorization_error" => GetAssetLineageResponseErrorType3.AuthorizationError, + "not_found" => GetAssetLineageResponseErrorType3.NotFound, + "not_implemented" => GetAssetLineageResponseErrorType3.NotImplemented, + "rate_limited" => GetAssetLineageResponseErrorType3.RateLimited, + "server_error" => GetAssetLineageResponseErrorType3.ServerError, + "validation_error" => GetAssetLineageResponseErrorType3.ValidationError, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType4.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType4.g.cs new file mode 100644 index 0000000..672b87e --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType4.g.cs @@ -0,0 +1,75 @@ + +#nullable enable + +namespace Fal +{ + /// + /// The category of error that occurred + /// + public enum GetAssetLineageResponseErrorType4 + { + /// + /// + /// + AuthorizationError, + /// + /// + /// + NotFound, + /// + /// + /// + NotImplemented, + /// + /// + /// + RateLimited, + /// + /// + /// + ServerError, + /// + /// + /// + ValidationError, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseErrorType4Extensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseErrorType4 value) + { + return value switch + { + GetAssetLineageResponseErrorType4.AuthorizationError => "authorization_error", + GetAssetLineageResponseErrorType4.NotFound => "not_found", + GetAssetLineageResponseErrorType4.NotImplemented => "not_implemented", + GetAssetLineageResponseErrorType4.RateLimited => "rate_limited", + GetAssetLineageResponseErrorType4.ServerError => "server_error", + GetAssetLineageResponseErrorType4.ValidationError => "validation_error", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseErrorType4? ToEnum(string value) + { + return value switch + { + "authorization_error" => GetAssetLineageResponseErrorType4.AuthorizationError, + "not_found" => GetAssetLineageResponseErrorType4.NotFound, + "not_implemented" => GetAssetLineageResponseErrorType4.NotImplemented, + "rate_limited" => GetAssetLineageResponseErrorType4.RateLimited, + "server_error" => GetAssetLineageResponseErrorType4.ServerError, + "validation_error" => GetAssetLineageResponseErrorType4.ValidationError, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType5.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType5.g.cs new file mode 100644 index 0000000..91e5f53 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType5.g.cs @@ -0,0 +1,75 @@ + +#nullable enable + +namespace Fal +{ + /// + /// The category of error that occurred + /// + public enum GetAssetLineageResponseErrorType5 + { + /// + /// + /// + AuthorizationError, + /// + /// + /// + NotFound, + /// + /// + /// + NotImplemented, + /// + /// + /// + RateLimited, + /// + /// + /// + ServerError, + /// + /// + /// + ValidationError, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseErrorType5Extensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseErrorType5 value) + { + return value switch + { + GetAssetLineageResponseErrorType5.AuthorizationError => "authorization_error", + GetAssetLineageResponseErrorType5.NotFound => "not_found", + GetAssetLineageResponseErrorType5.NotImplemented => "not_implemented", + GetAssetLineageResponseErrorType5.RateLimited => "rate_limited", + GetAssetLineageResponseErrorType5.ServerError => "server_error", + GetAssetLineageResponseErrorType5.ValidationError => "validation_error", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseErrorType5? ToEnum(string value) + { + return value switch + { + "authorization_error" => GetAssetLineageResponseErrorType5.AuthorizationError, + "not_found" => GetAssetLineageResponseErrorType5.NotFound, + "not_implemented" => GetAssetLineageResponseErrorType5.NotImplemented, + "rate_limited" => GetAssetLineageResponseErrorType5.RateLimited, + "server_error" => GetAssetLineageResponseErrorType5.ServerError, + "validation_error" => GetAssetLineageResponseErrorType5.ValidationError, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType6.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType6.g.cs new file mode 100644 index 0000000..f23aa00 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType6.g.cs @@ -0,0 +1,75 @@ + +#nullable enable + +namespace Fal +{ + /// + /// The category of error that occurred + /// + public enum GetAssetLineageResponseErrorType6 + { + /// + /// + /// + AuthorizationError, + /// + /// + /// + NotFound, + /// + /// + /// + NotImplemented, + /// + /// + /// + RateLimited, + /// + /// + /// + ServerError, + /// + /// + /// + ValidationError, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseErrorType6Extensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseErrorType6 value) + { + return value switch + { + GetAssetLineageResponseErrorType6.AuthorizationError => "authorization_error", + GetAssetLineageResponseErrorType6.NotFound => "not_found", + GetAssetLineageResponseErrorType6.NotImplemented => "not_implemented", + GetAssetLineageResponseErrorType6.RateLimited => "rate_limited", + GetAssetLineageResponseErrorType6.ServerError => "server_error", + GetAssetLineageResponseErrorType6.ValidationError => "validation_error", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseErrorType6? ToEnum(string value) + { + return value switch + { + "authorization_error" => GetAssetLineageResponseErrorType6.AuthorizationError, + "not_found" => GetAssetLineageResponseErrorType6.NotFound, + "not_implemented" => GetAssetLineageResponseErrorType6.NotImplemented, + "rate_limited" => GetAssetLineageResponseErrorType6.RateLimited, + "server_error" => GetAssetLineageResponseErrorType6.ServerError, + "validation_error" => GetAssetLineageResponseErrorType6.ValidationError, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType7.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType7.g.cs new file mode 100644 index 0000000..31d3b8f --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType7.g.cs @@ -0,0 +1,75 @@ + +#nullable enable + +namespace Fal +{ + /// + /// The category of error that occurred + /// + public enum GetAssetLineageResponseErrorType7 + { + /// + /// + /// + AuthorizationError, + /// + /// + /// + NotFound, + /// + /// + /// + NotImplemented, + /// + /// + /// + RateLimited, + /// + /// + /// + ServerError, + /// + /// + /// + ValidationError, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseErrorType7Extensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseErrorType7 value) + { + return value switch + { + GetAssetLineageResponseErrorType7.AuthorizationError => "authorization_error", + GetAssetLineageResponseErrorType7.NotFound => "not_found", + GetAssetLineageResponseErrorType7.NotImplemented => "not_implemented", + GetAssetLineageResponseErrorType7.RateLimited => "rate_limited", + GetAssetLineageResponseErrorType7.ServerError => "server_error", + GetAssetLineageResponseErrorType7.ValidationError => "validation_error", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseErrorType7? ToEnum(string value) + { + return value switch + { + "authorization_error" => GetAssetLineageResponseErrorType7.AuthorizationError, + "not_found" => GetAssetLineageResponseErrorType7.NotFound, + "not_implemented" => GetAssetLineageResponseErrorType7.NotImplemented, + "rate_limited" => GetAssetLineageResponseErrorType7.RateLimited, + "server_error" => GetAssetLineageResponseErrorType7.ServerError, + "validation_error" => GetAssetLineageResponseErrorType7.ValidationError, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType8.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType8.g.cs new file mode 100644 index 0000000..9a1b606 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType8.g.cs @@ -0,0 +1,75 @@ + +#nullable enable + +namespace Fal +{ + /// + /// The category of error that occurred + /// + public enum GetAssetLineageResponseErrorType8 + { + /// + /// + /// + AuthorizationError, + /// + /// + /// + NotFound, + /// + /// + /// + NotImplemented, + /// + /// + /// + RateLimited, + /// + /// + /// + ServerError, + /// + /// + /// + ValidationError, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseErrorType8Extensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseErrorType8 value) + { + return value switch + { + GetAssetLineageResponseErrorType8.AuthorizationError => "authorization_error", + GetAssetLineageResponseErrorType8.NotFound => "not_found", + GetAssetLineageResponseErrorType8.NotImplemented => "not_implemented", + GetAssetLineageResponseErrorType8.RateLimited => "rate_limited", + GetAssetLineageResponseErrorType8.ServerError => "server_error", + GetAssetLineageResponseErrorType8.ValidationError => "validation_error", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseErrorType8? ToEnum(string value) + { + return value switch + { + "authorization_error" => GetAssetLineageResponseErrorType8.AuthorizationError, + "not_found" => GetAssetLineageResponseErrorType8.NotFound, + "not_implemented" => GetAssetLineageResponseErrorType8.NotImplemented, + "rate_limited" => GetAssetLineageResponseErrorType8.RateLimited, + "server_error" => GetAssetLineageResponseErrorType8.ServerError, + "validation_error" => GetAssetLineageResponseErrorType8.ValidationError, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType9.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType9.g.cs new file mode 100644 index 0000000..77b5f05 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseErrorType9.g.cs @@ -0,0 +1,75 @@ + +#nullable enable + +namespace Fal +{ + /// + /// The category of error that occurred + /// + public enum GetAssetLineageResponseErrorType9 + { + /// + /// + /// + AuthorizationError, + /// + /// + /// + NotFound, + /// + /// + /// + NotImplemented, + /// + /// + /// + RateLimited, + /// + /// + /// + ServerError, + /// + /// + /// + ValidationError, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseErrorType9Extensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseErrorType9 value) + { + return value switch + { + GetAssetLineageResponseErrorType9.AuthorizationError => "authorization_error", + GetAssetLineageResponseErrorType9.NotFound => "not_found", + GetAssetLineageResponseErrorType9.NotImplemented => "not_implemented", + GetAssetLineageResponseErrorType9.RateLimited => "rate_limited", + GetAssetLineageResponseErrorType9.ServerError => "server_error", + GetAssetLineageResponseErrorType9.ValidationError => "validation_error", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseErrorType9? ToEnum(string value) + { + return value switch + { + "authorization_error" => GetAssetLineageResponseErrorType9.AuthorizationError, + "not_found" => GetAssetLineageResponseErrorType9.NotFound, + "not_implemented" => GetAssetLineageResponseErrorType9.NotImplemented, + "rate_limited" => GetAssetLineageResponseErrorType9.RateLimited, + "server_error" => GetAssetLineageResponseErrorType9.ServerError, + "validation_error" => GetAssetLineageResponseErrorType9.ValidationError, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineage.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineage.Json.g.cs new file mode 100644 index 0000000..3526b9d --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineage.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseLineage + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineage? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseLineage), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseLineage; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineage? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseLineage? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseLineage), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseLineage; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineage.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineage.g.cs new file mode 100644 index 0000000..86020d9 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineage.g.cs @@ -0,0 +1,74 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Derivation lineage graph of the asset + /// + public sealed partial class GetAssetLineageResponseLineage + { + /// + /// Node ID of the queried asset
+ /// Example: asset:0f343b0931126a20f133d67c2b018a3b + ///
+ /// asset:0f343b0931126a20f133d67c2b018a3b + [global::System.Text.Json.Serialization.JsonPropertyName("focus")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Focus { get; set; } + + /// + /// Lineage graph nodes + /// + [global::System.Text.Json.Serialization.JsonPropertyName("nodes")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::System.Collections.Generic.IList> Nodes { get; set; } + + /// + /// Lineage graph edges + /// + [global::System.Text.Json.Serialization.JsonPropertyName("edges")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::System.Collections.Generic.IList Edges { 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. + /// + /// + /// Node ID of the queried asset
+ /// Example: asset:0f343b0931126a20f133d67c2b018a3b + /// + /// + /// Lineage graph nodes + /// + /// + /// Lineage graph edges + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseLineage( + string focus, + global::System.Collections.Generic.IList> nodes, + global::System.Collections.Generic.IList edges) + { + this.Focus = focus ?? throw new global::System.ArgumentNullException(nameof(focus)); + this.Nodes = nodes ?? throw new global::System.ArgumentNullException(nameof(nodes)); + this.Edges = edges ?? throw new global::System.ArgumentNullException(nameof(edges)); + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseLineage() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdge.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdge.Json.g.cs new file mode 100644 index 0000000..bafbf55 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdge.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseLineageEdge + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageEdge? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseLineageEdge), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseLineageEdge; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageEdge? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseLineageEdge? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseLineageEdge), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseLineageEdge; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdge.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdge.g.cs new file mode 100644 index 0000000..222d77a --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdge.g.cs @@ -0,0 +1,102 @@ + +#nullable enable + +namespace Fal +{ + /// + /// A directed edge in the lineage graph + /// + public sealed partial class GetAssetLineageResponseLineageEdge + { + /// + /// Source node ID; edges point in generation-flow direction
+ /// Example: external:9e107d9d372bb6826bd81d3542a419d6 + ///
+ /// external:9e107d9d372bb6826bd81d3542a419d6 + [global::System.Text.Json.Serialization.JsonPropertyName("from")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string From { get; set; } + + /// + /// Target node ID
+ /// Example: request:019e6d0a-e5be-7b82-b329-35ae64296902 + ///
+ /// request:019e6d0a-e5be-7b82-b329-35ae64296902 + [global::System.Text.Json.Serialization.JsonPropertyName("to")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string To { get; set; } + + /// + /// How one lineage node relates to another + /// + [global::System.Text.Json.Serialization.JsonPropertyName("kind")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeKindJsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseLineageEdgeKind Kind { get; set; } + + /// + /// Input role for input_to / referenced_entity edges; null for generated_by + /// + [global::System.Text.Json.Serialization.JsonPropertyName("role")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.AnyOfJsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.AnyOf Role { get; set; } + + /// + /// input_to edges only: smart entities this input is the reference image of and that the request referenced + /// + [global::System.Text.Json.Serialization.JsonPropertyName("entities")] + public global::System.Collections.Generic.IList? Entities { 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. + /// + /// + /// Source node ID; edges point in generation-flow direction
+ /// Example: external:9e107d9d372bb6826bd81d3542a419d6 + /// + /// + /// Target node ID
+ /// Example: request:019e6d0a-e5be-7b82-b329-35ae64296902 + /// + /// + /// How one lineage node relates to another + /// + /// + /// Input role for input_to / referenced_entity edges; null for generated_by + /// + /// + /// input_to edges only: smart entities this input is the reference image of and that the request referenced + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseLineageEdge( + string from, + string to, + global::Fal.GetAssetLineageResponseLineageEdgeKind kind, + global::Fal.AnyOf role, + global::System.Collections.Generic.IList? entities) + { + this.From = from ?? throw new global::System.ArgumentNullException(nameof(from)); + this.To = to ?? throw new global::System.ArgumentNullException(nameof(to)); + this.Kind = kind; + this.Role = role; + this.Entities = entities; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseLineageEdge() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeEntitie.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeEntitie.Json.g.cs new file mode 100644 index 0000000..3da85ac --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeEntitie.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseLineageEdgeEntitie + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageEdgeEntitie? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseLineageEdgeEntitie), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseLineageEdgeEntitie; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageEdgeEntitie? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseLineageEdgeEntitie? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseLineageEdgeEntitie), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseLineageEdgeEntitie; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeEntitie.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeEntitie.g.cs new file mode 100644 index 0000000..3bf1f69 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeEntitie.g.cs @@ -0,0 +1,93 @@ + +#nullable enable + +namespace Fal +{ + /// + /// + /// + public sealed partial class GetAssetLineageResponseLineageEdgeEntitie + { + /// + /// Smart entity ID
+ /// Example: 43ce3411-1a25-4d14-875e-3562d341b090 + ///
+ /// 43ce3411-1a25-4d14-875e-3562d341b090 + [global::System.Text.Json.Serialization.JsonPropertyName("entity_id")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string EntityId { get; set; } + + /// + /// Smart entity type
+ /// Example: character + ///
+ /// character + [global::System.Text.Json.Serialization.JsonPropertyName("entity_type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageEdgeEntitieEntityTypeJsonConverter))] + public global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType EntityType { get; set; } + + /// + /// Entity display name; null when the entity is deleted
+ /// Example: Alice + ///
+ /// Alice + [global::System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// Entity @mention handle; null when the entity is deleted
+ /// Example: alice + ///
+ /// alice + [global::System.Text.Json.Serialization.JsonPropertyName("handle")] + public string? Handle { 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. + /// + /// + /// Smart entity ID
+ /// Example: 43ce3411-1a25-4d14-875e-3562d341b090 + /// + /// + /// Smart entity type
+ /// Example: character + /// + /// + /// Entity display name; null when the entity is deleted
+ /// Example: Alice + /// + /// + /// Entity @mention handle; null when the entity is deleted
+ /// Example: alice + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseLineageEdgeEntitie( + string entityId, + global::Fal.GetAssetLineageResponseLineageEdgeEntitieEntityType entityType, + string? name, + string? handle) + { + this.EntityId = entityId ?? throw new global::System.ArgumentNullException(nameof(entityId)); + this.EntityType = entityType; + this.Name = name; + this.Handle = handle; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseLineageEdgeEntitie() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeEntitieEntityType.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeEntitieEntityType.g.cs new file mode 100644 index 0000000..5dbcf04 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeEntitieEntityType.g.cs @@ -0,0 +1,46 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Smart entity type
+ /// Example: character + ///
+ public enum GetAssetLineageResponseLineageEdgeEntitieEntityType + { + /// + /// + /// + Character, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseLineageEdgeEntitieEntityTypeExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseLineageEdgeEntitieEntityType value) + { + return value switch + { + GetAssetLineageResponseLineageEdgeEntitieEntityType.Character => "character", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseLineageEdgeEntitieEntityType? ToEnum(string value) + { + return value switch + { + "character" => GetAssetLineageResponseLineageEdgeEntitieEntityType.Character, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeKind.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeKind.g.cs new file mode 100644 index 0000000..94b122a --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeKind.g.cs @@ -0,0 +1,57 @@ + +#nullable enable + +namespace Fal +{ + /// + /// How one lineage node relates to another + /// + public enum GetAssetLineageResponseLineageEdgeKind + { + /// + /// + /// + GeneratedBy, + /// + /// + /// + InputTo, + /// + /// + /// + ReferencedEntity, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseLineageEdgeKindExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseLineageEdgeKind value) + { + return value switch + { + GetAssetLineageResponseLineageEdgeKind.GeneratedBy => "generated_by", + GetAssetLineageResponseLineageEdgeKind.InputTo => "input_to", + GetAssetLineageResponseLineageEdgeKind.ReferencedEntity => "referenced_entity", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseLineageEdgeKind? ToEnum(string value) + { + return value switch + { + "generated_by" => GetAssetLineageResponseLineageEdgeKind.GeneratedBy, + "input_to" => GetAssetLineageResponseLineageEdgeKind.InputTo, + "referenced_entity" => GetAssetLineageResponseLineageEdgeKind.ReferencedEntity, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeRole.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeRole.g.cs new file mode 100644 index 0000000..f7125b8 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageEdgeRole.g.cs @@ -0,0 +1,63 @@ + +#nullable enable + +namespace Fal +{ + /// + /// How an input was used by the consuming generation + /// + public enum GetAssetLineageResponseLineageEdgeRole + { + /// + /// + /// + ContentRef, + /// + /// + /// + Control, + /// + /// + /// + Mask, + /// + /// + /// + Source, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseLineageEdgeRoleExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseLineageEdgeRole value) + { + return value switch + { + GetAssetLineageResponseLineageEdgeRole.ContentRef => "content_ref", + GetAssetLineageResponseLineageEdgeRole.Control => "control", + GetAssetLineageResponseLineageEdgeRole.Mask => "mask", + GetAssetLineageResponseLineageEdgeRole.Source => "source", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseLineageEdgeRole? ToEnum(string value) + { + return value switch + { + "content_ref" => GetAssetLineageResponseLineageEdgeRole.ContentRef, + "control" => GetAssetLineageResponseLineageEdgeRole.Control, + "mask" => GetAssetLineageResponseLineageEdgeRole.Mask, + "source" => GetAssetLineageResponseLineageEdgeRole.Source, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1.Json.g.cs new file mode 100644 index 0000000..aef5198 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseLineageNodeVariant1 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageNodeVariant1? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant1), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseLineageNodeVariant1; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageNodeVariant1? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseLineageNodeVariant1? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseLineageNodeVariant1), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseLineageNodeVariant1; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1.g.cs new file mode 100644 index 0000000..7f2f220 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1.g.cs @@ -0,0 +1,148 @@ + +#nullable enable + +namespace Fal +{ + /// + /// An asset in the user's library + /// + public sealed partial class GetAssetLineageResponseLineageNodeVariant1 + { + /// + /// Node kind + /// + [global::System.Text.Json.Serialization.JsonPropertyName("kind")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1KindJsonConverter))] + public global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind Kind { get; set; } + + /// + /// Graph node ID
+ /// Example: asset:0f343b0931126a20f133d67c2b018a3b + ///
+ /// asset:0f343b0931126a20f133d67c2b018a3b + [global::System.Text.Json.Serialization.JsonPropertyName("id")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Id { get; set; } + + /// + /// Content-addressed asset identity (md5 of the media URL)
+ /// Example: 0f343b0931126a20f133d67c2b018a3b + ///
+ /// 0f343b0931126a20f133d67c2b018a3b + [global::System.Text.Json.Serialization.JsonPropertyName("output_key")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string OutputKey { get; set; } + + /// + /// Media URL; null when the asset is deleted or expired
+ /// Example: https://v3b.fal.media/files/b/0a9b4900/portrait.png + ///
+ /// https://v3b.fal.media/files/b/0a9b4900/portrait.png + [global::System.Text.Json.Serialization.JsonPropertyName("url")] + public string? Url { get; set; } + + /// + /// Asset media type + /// + [global::System.Text.Json.Serialization.JsonPropertyName("type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant1TypeJsonConverter))] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::Fal.GetAssetLineageResponseLineageNodeVariant1Type Type { get; set; } + + /// + /// Request that generated this asset
+ /// Example: 019e6d0a-e5be-7b82-b329-35ae64296902 + ///
+ /// 019e6d0a-e5be-7b82-b329-35ae64296902 + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string RequestId { get; set; } + + /// + /// Asset ID (navigable handle); null when the asset is deleted or expired
+ /// Example: d8b6elcregj72v34jr8g + ///
+ /// d8b6elcregj72v34jr8g + [global::System.Text.Json.Serialization.JsonPropertyName("asset_id")] + public string? AssetId { get; set; } + + /// + /// Whether the asset has been deleted or has expired
+ /// Example: false + ///
+ /// false + [global::System.Text.Json.Serialization.JsonPropertyName("tombstone")] + [global::System.Text.Json.Serialization.JsonRequired] + public required bool Tombstone { 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. + /// + /// + /// Graph node ID
+ /// Example: asset:0f343b0931126a20f133d67c2b018a3b + /// + /// + /// Content-addressed asset identity (md5 of the media URL)
+ /// Example: 0f343b0931126a20f133d67c2b018a3b + /// + /// + /// Asset media type + /// + /// + /// Request that generated this asset
+ /// Example: 019e6d0a-e5be-7b82-b329-35ae64296902 + /// + /// + /// Whether the asset has been deleted or has expired
+ /// Example: false + /// + /// + /// Node kind + /// + /// + /// Media URL; null when the asset is deleted or expired
+ /// Example: https://v3b.fal.media/files/b/0a9b4900/portrait.png + /// + /// + /// Asset ID (navigable handle); null when the asset is deleted or expired
+ /// Example: d8b6elcregj72v34jr8g + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseLineageNodeVariant1( + string id, + string outputKey, + global::Fal.GetAssetLineageResponseLineageNodeVariant1Type type, + string requestId, + bool tombstone, + global::Fal.GetAssetLineageResponseLineageNodeVariant1Kind kind, + string? url, + string? assetId) + { + this.Kind = kind; + this.Id = id ?? throw new global::System.ArgumentNullException(nameof(id)); + this.OutputKey = outputKey ?? throw new global::System.ArgumentNullException(nameof(outputKey)); + this.Url = url; + this.Type = type; + this.RequestId = requestId ?? throw new global::System.ArgumentNullException(nameof(requestId)); + this.AssetId = assetId; + this.Tombstone = tombstone; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseLineageNodeVariant1() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1Kind.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1Kind.g.cs new file mode 100644 index 0000000..5172607 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1Kind.g.cs @@ -0,0 +1,45 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Node kind + /// + public enum GetAssetLineageResponseLineageNodeVariant1Kind + { + /// + /// + /// + Asset, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseLineageNodeVariant1KindExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseLineageNodeVariant1Kind value) + { + return value switch + { + GetAssetLineageResponseLineageNodeVariant1Kind.Asset => "asset", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseLineageNodeVariant1Kind? ToEnum(string value) + { + return value switch + { + "asset" => GetAssetLineageResponseLineageNodeVariant1Kind.Asset, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1Type.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1Type.g.cs new file mode 100644 index 0000000..dd6768a --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant1Type.g.cs @@ -0,0 +1,69 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Asset media type + /// + public enum GetAssetLineageResponseLineageNodeVariant1Type + { + /// + /// + /// + x3d, + /// + /// + /// + Audio, + /// + /// + /// + Image, + /// + /// + /// + Text, + /// + /// + /// + Video, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseLineageNodeVariant1TypeExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseLineageNodeVariant1Type value) + { + return value switch + { + GetAssetLineageResponseLineageNodeVariant1Type.x3d => "3d", + GetAssetLineageResponseLineageNodeVariant1Type.Audio => "audio", + GetAssetLineageResponseLineageNodeVariant1Type.Image => "image", + GetAssetLineageResponseLineageNodeVariant1Type.Text => "text", + GetAssetLineageResponseLineageNodeVariant1Type.Video => "video", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseLineageNodeVariant1Type? ToEnum(string value) + { + return value switch + { + "3d" => GetAssetLineageResponseLineageNodeVariant1Type.x3d, + "audio" => GetAssetLineageResponseLineageNodeVariant1Type.Audio, + "image" => GetAssetLineageResponseLineageNodeVariant1Type.Image, + "text" => GetAssetLineageResponseLineageNodeVariant1Type.Text, + "video" => GetAssetLineageResponseLineageNodeVariant1Type.Video, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant2.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant2.Json.g.cs new file mode 100644 index 0000000..235ff04 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant2.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseLineageNodeVariant2 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageNodeVariant2? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant2), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseLineageNodeVariant2; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageNodeVariant2? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseLineageNodeVariant2? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseLineageNodeVariant2), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseLineageNodeVariant2; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant2.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant2.g.cs new file mode 100644 index 0000000..7c05b58 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant2.g.cs @@ -0,0 +1,91 @@ + +#nullable enable + +namespace Fal +{ + /// + /// An input that is not (or no longer) in the asset library + /// + public sealed partial class GetAssetLineageResponseLineageNodeVariant2 + { + /// + /// Node kind + /// + [global::System.Text.Json.Serialization.JsonPropertyName("kind")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant2KindJsonConverter))] + public global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind Kind { get; set; } + + /// + /// Graph node ID
+ /// Example: external:9e107d9d372bb6826bd81d3542a419d6 + ///
+ /// external:9e107d9d372bb6826bd81d3542a419d6 + [global::System.Text.Json.Serialization.JsonPropertyName("id")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Id { get; set; } + + /// + /// Content-addressed asset identity (md5 of the media URL)
+ /// Example: 9e107d9d372bb6826bd81d3542a419d6 + ///
+ /// 9e107d9d372bb6826bd81d3542a419d6 + [global::System.Text.Json.Serialization.JsonPropertyName("output_key")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string OutputKey { get; set; } + + /// + /// Source media URL when known
+ /// Example: https://fal.media/files/source.png + ///
+ /// https://fal.media/files/source.png + [global::System.Text.Json.Serialization.JsonPropertyName("url")] + public string? Url { 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. + /// + /// + /// Graph node ID
+ /// Example: external:9e107d9d372bb6826bd81d3542a419d6 + /// + /// + /// Content-addressed asset identity (md5 of the media URL)
+ /// Example: 9e107d9d372bb6826bd81d3542a419d6 + /// + /// + /// Node kind + /// + /// + /// Source media URL when known
+ /// Example: https://fal.media/files/source.png + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseLineageNodeVariant2( + string id, + string outputKey, + global::Fal.GetAssetLineageResponseLineageNodeVariant2Kind kind, + string? url) + { + this.Kind = kind; + this.Id = id ?? throw new global::System.ArgumentNullException(nameof(id)); + this.OutputKey = outputKey ?? throw new global::System.ArgumentNullException(nameof(outputKey)); + this.Url = url; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseLineageNodeVariant2() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant2Kind.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant2Kind.g.cs new file mode 100644 index 0000000..3ca4214 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant2Kind.g.cs @@ -0,0 +1,45 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Node kind + /// + public enum GetAssetLineageResponseLineageNodeVariant2Kind + { + /// + /// + /// + ExternalInput, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseLineageNodeVariant2KindExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseLineageNodeVariant2Kind value) + { + return value switch + { + GetAssetLineageResponseLineageNodeVariant2Kind.ExternalInput => "external_input", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseLineageNodeVariant2Kind? ToEnum(string value) + { + return value switch + { + "external_input" => GetAssetLineageResponseLineageNodeVariant2Kind.ExternalInput, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant3.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant3.Json.g.cs new file mode 100644 index 0000000..2ae6fbc --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant3.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseLineageNodeVariant3 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageNodeVariant3? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant3), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseLineageNodeVariant3; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageNodeVariant3? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseLineageNodeVariant3? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseLineageNodeVariant3), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseLineageNodeVariant3; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant3.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant3.g.cs new file mode 100644 index 0000000..cb573f5 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant3.g.cs @@ -0,0 +1,119 @@ + +#nullable enable + +namespace Fal +{ + /// + /// A generation request in the lineage + /// + public sealed partial class GetAssetLineageResponseLineageNodeVariant3 + { + /// + /// Node kind + /// + [global::System.Text.Json.Serialization.JsonPropertyName("kind")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant3KindJsonConverter))] + public global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind Kind { get; set; } + + /// + /// Graph node ID
+ /// Example: request:019e6d0a-e5be-7b82-b329-35ae64296902 + ///
+ /// request:019e6d0a-e5be-7b82-b329-35ae64296902 + [global::System.Text.Json.Serialization.JsonPropertyName("id")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Id { get; set; } + + /// + /// Request ID
+ /// Example: 019e6d0a-e5be-7b82-b329-35ae64296902 + ///
+ /// 019e6d0a-e5be-7b82-b329-35ae64296902 + [global::System.Text.Json.Serialization.JsonPropertyName("request_id")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string RequestId { get; set; } + + /// + /// Model endpoint that ran the request
+ /// Example: fal-ai/flux/dev + ///
+ /// fal-ai/flux/dev + [global::System.Text.Json.Serialization.JsonPropertyName("endpoint")] + public string? Endpoint { get; set; } + + /// + /// Prompt used by the request when captured
+ /// Example: cinematic portrait + ///
+ /// cinematic portrait + [global::System.Text.Json.Serialization.JsonPropertyName("prompt")] + public string? Prompt { get; set; } + + /// + /// Request time when captured
+ /// Example: 2026-05-23T20:00:00.000Z + ///
+ /// 2026-05-23T20:00:00.000Z + [global::System.Text.Json.Serialization.JsonPropertyName("created_at")] + public string? CreatedAt { 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. + /// + /// + /// Graph node ID
+ /// Example: request:019e6d0a-e5be-7b82-b329-35ae64296902 + /// + /// + /// Request ID
+ /// Example: 019e6d0a-e5be-7b82-b329-35ae64296902 + /// + /// + /// Node kind + /// + /// + /// Model endpoint that ran the request
+ /// Example: fal-ai/flux/dev + /// + /// + /// Prompt used by the request when captured
+ /// Example: cinematic portrait + /// + /// + /// Request time when captured
+ /// Example: 2026-05-23T20:00:00.000Z + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseLineageNodeVariant3( + string id, + string requestId, + global::Fal.GetAssetLineageResponseLineageNodeVariant3Kind kind, + string? endpoint, + string? prompt, + string? createdAt) + { + this.Kind = kind; + this.Id = id ?? throw new global::System.ArgumentNullException(nameof(id)); + this.RequestId = requestId ?? throw new global::System.ArgumentNullException(nameof(requestId)); + this.Endpoint = endpoint; + this.Prompt = prompt; + this.CreatedAt = createdAt; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseLineageNodeVariant3() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant3Kind.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant3Kind.g.cs new file mode 100644 index 0000000..663319e --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant3Kind.g.cs @@ -0,0 +1,45 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Node kind + /// + public enum GetAssetLineageResponseLineageNodeVariant3Kind + { + /// + /// + /// + Request, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseLineageNodeVariant3KindExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseLineageNodeVariant3Kind value) + { + return value switch + { + GetAssetLineageResponseLineageNodeVariant3Kind.Request => "request", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseLineageNodeVariant3Kind? ToEnum(string value) + { + return value switch + { + "request" => GetAssetLineageResponseLineageNodeVariant3Kind.Request, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4.Json.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4.Json.g.cs new file mode 100644 index 0000000..f7033c1 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public sealed partial class GetAssetLineageResponseLineageNodeVariant4 + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageNodeVariant4? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.GetAssetLineageResponseLineageNodeVariant4), + jsonSerializerContext) as global::Fal.GetAssetLineageResponseLineageNodeVariant4; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.GetAssetLineageResponseLineageNodeVariant4? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.GetAssetLineageResponseLineageNodeVariant4? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.GetAssetLineageResponseLineageNodeVariant4), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.GetAssetLineageResponseLineageNodeVariant4; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4.g.cs new file mode 100644 index 0000000..3b83dc6 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4.g.cs @@ -0,0 +1,135 @@ + +#nullable enable + +namespace Fal +{ + /// + /// A smart entity (e.g. character) referenced by a request + /// + public sealed partial class GetAssetLineageResponseLineageNodeVariant4 + { + /// + /// Node kind + /// + [global::System.Text.Json.Serialization.JsonPropertyName("kind")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4KindJsonConverter))] + public global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind Kind { get; set; } + + /// + /// Graph node ID
+ /// Example: entity:43ce3411-1a25-4d14-875e-3562d341b090 + ///
+ /// entity:43ce3411-1a25-4d14-875e-3562d341b090 + [global::System.Text.Json.Serialization.JsonPropertyName("id")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Id { get; set; } + + /// + /// Smart entity ID
+ /// Example: 43ce3411-1a25-4d14-875e-3562d341b090 + ///
+ /// 43ce3411-1a25-4d14-875e-3562d341b090 + [global::System.Text.Json.Serialization.JsonPropertyName("entity_id")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string EntityId { get; set; } + + /// + /// Smart entity type
+ /// Example: character + ///
+ /// character + [global::System.Text.Json.Serialization.JsonPropertyName("entity_type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Fal.JsonConverters.GetAssetLineageResponseLineageNodeVariant4EntityTypeJsonConverter))] + public global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType EntityType { get; set; } + + /// + /// Entity display name; null when the entity is deleted
+ /// Example: Alice + ///
+ /// Alice + [global::System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// Entity @mention handle; null when the entity is deleted
+ /// Example: alice + ///
+ /// alice + [global::System.Text.Json.Serialization.JsonPropertyName("handle")] + public string? Handle { get; set; } + + /// + /// Whether the entity has been deleted
+ /// Example: false + ///
+ /// false + [global::System.Text.Json.Serialization.JsonPropertyName("tombstone")] + [global::System.Text.Json.Serialization.JsonRequired] + public required bool Tombstone { 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. + /// + /// + /// Graph node ID
+ /// Example: entity:43ce3411-1a25-4d14-875e-3562d341b090 + /// + /// + /// Smart entity ID
+ /// Example: 43ce3411-1a25-4d14-875e-3562d341b090 + /// + /// + /// Whether the entity has been deleted
+ /// Example: false + /// + /// + /// Node kind + /// + /// + /// Smart entity type
+ /// Example: character + /// + /// + /// Entity display name; null when the entity is deleted
+ /// Example: Alice + /// + /// + /// Entity @mention handle; null when the entity is deleted
+ /// Example: alice + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public GetAssetLineageResponseLineageNodeVariant4( + string id, + string entityId, + bool tombstone, + global::Fal.GetAssetLineageResponseLineageNodeVariant4Kind kind, + global::Fal.GetAssetLineageResponseLineageNodeVariant4EntityType entityType, + string? name, + string? handle) + { + this.Kind = kind; + this.Id = id ?? throw new global::System.ArgumentNullException(nameof(id)); + this.EntityId = entityId ?? throw new global::System.ArgumentNullException(nameof(entityId)); + this.EntityType = entityType; + this.Name = name; + this.Handle = handle; + this.Tombstone = tombstone; + } + + /// + /// Initializes a new instance of the class. + /// + public GetAssetLineageResponseLineageNodeVariant4() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4EntityType.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4EntityType.g.cs new file mode 100644 index 0000000..cb5b3ec --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4EntityType.g.cs @@ -0,0 +1,46 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Smart entity type
+ /// Example: character + ///
+ public enum GetAssetLineageResponseLineageNodeVariant4EntityType + { + /// + /// + /// + Character, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseLineageNodeVariant4EntityTypeExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseLineageNodeVariant4EntityType value) + { + return value switch + { + GetAssetLineageResponseLineageNodeVariant4EntityType.Character => "character", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseLineageNodeVariant4EntityType? ToEnum(string value) + { + return value switch + { + "character" => GetAssetLineageResponseLineageNodeVariant4EntityType.Character, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4Kind.g.cs b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4Kind.g.cs new file mode 100644 index 0000000..96709ff --- /dev/null +++ b/src/libs/Fal/Generated/Fal.Models.GetAssetLineageResponseLineageNodeVariant4Kind.g.cs @@ -0,0 +1,45 @@ + +#nullable enable + +namespace Fal +{ + /// + /// Node kind + /// + public enum GetAssetLineageResponseLineageNodeVariant4Kind + { + /// + /// + /// + Entity, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class GetAssetLineageResponseLineageNodeVariant4KindExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this GetAssetLineageResponseLineageNodeVariant4Kind value) + { + return value switch + { + GetAssetLineageResponseLineageNodeVariant4Kind.Entity => "entity", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static GetAssetLineageResponseLineageNodeVariant4Kind? ToEnum(string value) + { + return value switch + { + "entity" => GetAssetLineageResponseLineageNodeVariant4Kind.Entity, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Fal/Generated/Fal.OneOf.4.Json.g.cs b/src/libs/Fal/Generated/Fal.OneOf.4.Json.g.cs new file mode 100644 index 0000000..44c1301 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.OneOf.4.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Fal +{ + public readonly partial struct OneOf + { + /// + /// 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 generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Fal.OneOf? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Fal.OneOf), + jsonSerializerContext) as global::Fal.OneOf?; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Fal.OneOf? FromJson( + string json) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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::Fal.OneOf? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Fal.SourceGenerationContext.Default); + } + + 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::Fal.OneOf), + jsonSerializerContext).ConfigureAwait(false)) as global::Fal.OneOf?; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask?> FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + /// + /// 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) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Fal.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync?>( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Fal/Generated/Fal.OneOf.4.g.cs b/src/libs/Fal/Generated/Fal.OneOf.4.g.cs new file mode 100644 index 0000000..55efb56 --- /dev/null +++ b/src/libs/Fal/Generated/Fal.OneOf.4.g.cs @@ -0,0 +1,460 @@ + +#nullable enable + +namespace Fal +{ + /// + /// + /// + public readonly partial struct OneOf : global::System.IEquatable> + { + /// + /// + /// +#if NET6_0_OR_GREATER + public T1? Value1 { get; init; } +#else + public T1? Value1 { get; } +#endif + + /// + /// + /// +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(Value1))] +#endif + public bool IsValue1 => Value1 != null; + + /// + /// + /// + public bool TryPickValue1( +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.NotNullWhen(true)] +#endif + out T1? value) + { + value = Value1; + return IsValue1; + } + + /// + /// + /// + public T1 PickValue1() => IsValue1 + ? Value1! + : throw new global::System.InvalidOperationException($"Expected union variant 'Value1' but the value was {ToString()}."); + + /// + /// + /// +#if NET6_0_OR_GREATER + public T2? Value2 { get; init; } +#else + public T2? Value2 { get; } +#endif + + /// + /// + /// +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(Value2))] +#endif + public bool IsValue2 => Value2 != null; + + /// + /// + /// + public bool TryPickValue2( +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.NotNullWhen(true)] +#endif + out T2? value) + { + value = Value2; + return IsValue2; + } + + /// + /// + /// + public T2 PickValue2() => IsValue2 + ? Value2! + : throw new global::System.InvalidOperationException($"Expected union variant 'Value2' but the value was {ToString()}."); + + /// + /// + /// +#if NET6_0_OR_GREATER + public T3? Value3 { get; init; } +#else + public T3? Value3 { get; } +#endif + + /// + /// + /// +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(Value3))] +#endif + public bool IsValue3 => Value3 != null; + + /// + /// + /// + public bool TryPickValue3( +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.NotNullWhen(true)] +#endif + out T3? value) + { + value = Value3; + return IsValue3; + } + + /// + /// + /// + public T3 PickValue3() => IsValue3 + ? Value3! + : throw new global::System.InvalidOperationException($"Expected union variant 'Value3' but the value was {ToString()}."); + + /// + /// + /// +#if NET6_0_OR_GREATER + public T4? Value4 { get; init; } +#else + public T4? Value4 { get; } +#endif + + /// + /// + /// +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(Value4))] +#endif + public bool IsValue4 => Value4 != null; + + /// + /// + /// + public bool TryPickValue4( +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.NotNullWhen(true)] +#endif + out T4? value) + { + value = Value4; + return IsValue4; + } + + /// + /// + /// + public T4 PickValue4() => IsValue4 + ? Value4! + : throw new global::System.InvalidOperationException($"Expected union variant 'Value4' but the value was {ToString()}."); + /// + /// + /// + public static implicit operator OneOf(T1 value) => new OneOf((T1?)value); + + /// + /// + /// + public static implicit operator T1?(OneOf @this) => @this.Value1; + + /// + /// + /// + public OneOf(T1? value) + { + Value1 = value; + } + + /// + /// + /// + public static OneOf FromValue1(T1? value) => new OneOf(value); + + /// + /// + /// + public static implicit operator OneOf(T2 value) => new OneOf((T2?)value); + + /// + /// + /// + public static implicit operator T2?(OneOf @this) => @this.Value2; + + /// + /// + /// + public OneOf(T2? value) + { + Value2 = value; + } + + /// + /// + /// + public static OneOf FromValue2(T2? value) => new OneOf(value); + + /// + /// + /// + public static implicit operator OneOf(T3 value) => new OneOf((T3?)value); + + /// + /// + /// + public static implicit operator T3?(OneOf @this) => @this.Value3; + + /// + /// + /// + public OneOf(T3? value) + { + Value3 = value; + } + + /// + /// + /// + public static OneOf FromValue3(T3? value) => new OneOf(value); + + /// + /// + /// + public static implicit operator OneOf(T4 value) => new OneOf((T4?)value); + + /// + /// + /// + public static implicit operator T4?(OneOf @this) => @this.Value4; + + /// + /// + /// + public OneOf(T4? value) + { + Value4 = value; + } + + /// + /// + /// + public static OneOf FromValue4(T4? value) => new OneOf(value); + + /// + /// + /// + public OneOf( + T1? value1, + T2? value2, + T3? value3, + T4? value4 + ) + { + Value1 = value1; + Value2 = value2; + Value3 = value3; + Value4 = value4; + } + + /// + /// + /// + public object? Object => + Value4 as object ?? + Value3 as object ?? + Value2 as object ?? + Value1 as object + ; + + /// + /// + /// + public override string? ToString() => + Value1?.ToString() ?? + Value2?.ToString() ?? + Value3?.ToString() ?? + Value4?.ToString() + ; + + /// + /// + /// + public bool Validate() + { + return IsValue1 && !IsValue2 && !IsValue3 && !IsValue4 || !IsValue1 && IsValue2 && !IsValue3 && !IsValue4 || !IsValue1 && !IsValue2 && IsValue3 && !IsValue4 || !IsValue1 && !IsValue2 && !IsValue3 && IsValue4; + } + + /// + /// + /// + public TResult? Match( + global::System.Func? value1 = null, + global::System.Func? value2 = null, + global::System.Func? value3 = null, + global::System.Func? value4 = null, + bool validate = true) + { + if (validate) + { + Validate(); + } + + if (IsValue1 && value1 != null) + { + return value1(Value1!); + } + else if (IsValue2 && value2 != null) + { + return value2(Value2!); + } + else if (IsValue3 && value3 != null) + { + return value3(Value3!); + } + else if (IsValue4 && value4 != null) + { + return value4(Value4!); + } + + return default(TResult); + } + + /// + /// + /// + public void Match( + global::System.Action? value1 = null, + + global::System.Action? value2 = null, + + global::System.Action? value3 = null, + + global::System.Action? value4 = null, + bool validate = true) + { + if (validate) + { + Validate(); + } + + if (IsValue1) + { + value1?.Invoke(Value1!); + } + else if (IsValue2) + { + value2?.Invoke(Value2!); + } + else if (IsValue3) + { + value3?.Invoke(Value3!); + } + else if (IsValue4) + { + value4?.Invoke(Value4!); + } + } + + /// + /// + /// + public void Switch( + global::System.Action? value1 = null, + global::System.Action? value2 = null, + global::System.Action? value3 = null, + global::System.Action? value4 = null, + bool validate = true) + { + if (validate) + { + Validate(); + } + + if (IsValue1) + { + value1?.Invoke(Value1!); + } + else if (IsValue2) + { + value2?.Invoke(Value2!); + } + else if (IsValue3) + { + value3?.Invoke(Value3!); + } + else if (IsValue4) + { + value4?.Invoke(Value4!); + } + } + + /// + /// + /// + public override int GetHashCode() + { + var fields = new object?[] + { + Value1, + typeof(T1), + Value2, + typeof(T2), + Value3, + typeof(T3), + Value4, + typeof(T4), + }; + const int offset = unchecked((int)2166136261); + const int prime = 16777619; + static int HashCodeAggregator(int hashCode, object? value) => value == null + ? (hashCode ^ 0) * prime + : (hashCode ^ value.GetHashCode()) * prime; + + return global::System.Linq.Enumerable.Aggregate(fields, offset, HashCodeAggregator); + } + + /// + /// + /// + public bool Equals(OneOf other) + { + return + global::System.Collections.Generic.EqualityComparer.Default.Equals(Value1, other.Value1) && + global::System.Collections.Generic.EqualityComparer.Default.Equals(Value2, other.Value2) && + global::System.Collections.Generic.EqualityComparer.Default.Equals(Value3, other.Value3) && + global::System.Collections.Generic.EqualityComparer.Default.Equals(Value4, other.Value4) + ; + } + + /// + /// + /// + public static bool operator ==(OneOf obj1, OneOf obj2) + { + return global::System.Collections.Generic.EqualityComparer>.Default.Equals(obj1, obj2); + } + + /// + /// + /// + public static bool operator !=(OneOf obj1, OneOf obj2) + { + return !(obj1 == obj2); + } + + /// + /// + /// + public override bool Equals(object? obj) + { + return obj is OneOf o && Equals(o); + } + } +} diff --git a/src/libs/Fal/Generated/autosdk.generated-examples.json b/src/libs/Fal/Generated/autosdk.generated-examples.json index 81b78ef..452284f 100644 --- a/src/libs/Fal/Generated/autosdk.generated-examples.json +++ b/src/libs/Fal/Generated/autosdk.generated-examples.json @@ -200,6 +200,17 @@ }, { "Order": 19, + "Title": "Get asset lineage", + "Slug": "getassetlineage", + "Description": "Get the derivation lineage of an asset by asset ID: the inputs it was generated from, the generation requests along the way, and any referenced characters, traversed recursively up to \u0060depth\u0060 levels. Deleted or expired ancestors stay in the graph flagged as tombstones; inputs that were never captured appear as external inputs.", + "Language": "http", + "Code": "### Get asset lineage\n# @name getAssetLineage\nGET {{host}}/assets/{{asset_id}}/lineage?depth=5\nAuthorization: Bearer {{token}}\nAccept: application/json\n\n## Responses\n# 200\n# Description: Asset lineage graph\n# Content-Type: application/json\n# 400\n# Description: Invalid request parameters\n# Content-Type: application/json\n# 401\n# Description: Authentication required\n# Content-Type: application/json\n# 403\n# Description: Access denied\n# Content-Type: application/json\n# 404\n# Description: Resource not found\n# Content-Type: application/json\n# 409\n# Description: Invalid request parameters\n# Content-Type: application/json\n# 422\n# Description: Invalid request parameters\n# Content-Type: application/json\n# 429\n# Description: Rate limit exceeded\n# Content-Type: application/json\n# 500\n# Description: Internal server error\n# Content-Type: application/json\n# 502\n# Description: Upstream asset service error\n# Content-Type: application/json", + "Format": "http", + "OperationId": "getAssetLineage", + "Setup": null + }, + { + "Order": 20, "Title": "List asset characters", "Slug": "listassetcharacters", "Description": "List asset characters for the authenticated user\u0027s fal Assets library.", @@ -210,7 +221,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 20, + "Order": 21, "Title": "Browse assets in a collection", "Slug": "listassetcollectionassets", "Description": "Browse assets in a collection for the authenticated user\u0027s fal Assets library.", @@ -221,7 +232,7 @@ "Setup": null }, { - "Order": 21, + "Order": 22, "Title": "List asset collections", "Slug": "listassetcollections", "Description": "List asset collections for the authenticated user\u0027s fal Assets library.", @@ -232,7 +243,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 22, + "Order": 23, "Title": "List asset tags", "Slug": "listassettags", "Description": "List asset tags for the authenticated user\u0027s fal Assets library.", @@ -243,7 +254,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 23, + "Order": 24, "Title": "List tags for an asset", "Slug": "listassettagsforasset", "Description": "List tags for an asset by vector ID. Vectors that have not been saved as assets return an empty tag list.", @@ -254,7 +265,7 @@ "Setup": null }, { - "Order": 24, + "Order": 25, "Title": "Browse assets", "Slug": "listassets", "Description": "Browse and semantically search fal Assets across all media, uploads, favorites, collections, tags, and character references.", @@ -265,7 +276,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 25, + "Order": 26, "Title": "Move asset collection", "Slug": "moveassetcollection", "Description": "Move a manual asset collection under another collection, or to the top level. Only manual collections can be moved or act as folders; nesting is limited to 5 levels deep and cannot create a cycle.", @@ -276,7 +287,7 @@ "Setup": null }, { - "Order": 26, + "Order": 27, "Title": "Remove asset from collection", "Slug": "removeassetfromcollection", "Description": "Remove an asset from a manual or character collection by request ID or vector ID.", @@ -287,7 +298,7 @@ "Setup": null }, { - "Order": 27, + "Order": 28, "Title": "Set tags for an asset", "Slug": "setassettagsforasset", "Description": "Set tags for an asset. Provide a request ID or vector ID; unresolved references are materialized before tag state is added.", @@ -298,7 +309,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 28, + "Order": 29, "Title": "Unassign tag from asset", "Slug": "unassignassettag", "Description": "Unassign a tag from an asset by request ID or vector ID.", @@ -309,7 +320,7 @@ "Setup": null }, { - "Order": 29, + "Order": 30, "Title": "Unfavorite asset", "Slug": "unfavoriteasset", "Description": "Unfavorite an asset by request ID or vector ID.", @@ -320,7 +331,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 30, + "Order": 31, "Title": "Unfavorite asset character", "Slug": "unfavoriteassetcharacter", "Description": "Unfavorite an asset character for the authenticated user\u0027s fal Assets library.", @@ -331,7 +342,7 @@ "Setup": null }, { - "Order": 31, + "Order": 32, "Title": "Unfavorite asset collection", "Slug": "unfavoriteassetcollection", "Description": "Unfavorite an asset collection for the authenticated user\u0027s fal Assets library.", @@ -342,7 +353,7 @@ "Setup": null }, { - "Order": 32, + "Order": 33, "Title": "Update asset character", "Slug": "updateassetcharacter", "Description": "Update an asset character for the authenticated user\u0027s fal Assets library. Prefer vector IDs or request IDs in reference_images for existing fal-generated assets; use fal-hosted image URLs only for standalone images. Unresolved ID references are materialized before character state is added.", @@ -353,7 +364,7 @@ "Setup": null }, { - "Order": 33, + "Order": 34, "Title": "Update asset collection", "Slug": "updateassetcollection", "Description": "Update asset collection for the authenticated user\u0027s fal Assets library.", @@ -364,7 +375,7 @@ "Setup": null }, { - "Order": 34, + "Order": 35, "Title": "Update asset tag", "Slug": "updateassettag", "Description": "Update asset tag for the authenticated user\u0027s fal Assets library.", @@ -375,7 +386,7 @@ "Setup": null }, { - "Order": 35, + "Order": 36, "Title": "Upload asset", "Slug": "uploadasset", "Description": "Upload asset for the authenticated user\u0027s fal Assets library.", @@ -386,7 +397,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 36, + "Order": 37, "Title": "Create Compute Instance", "Slug": "createcomputeinstance", "Description": "Creates a new compute instance with the specified configuration and SSH key.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n- Valid SSH public key required for instance access\n\n**Key Features:**\n- Create high-performance GPU instances\n- Specify sector for InfiniBand configuration (8x H100 only)\n- SSH key-based authentication\n- Automatic instance provisioning and region assignment\n- Idempotent creation with Idempotency-Key header (optional but recommended)\n\n**Common Use Cases:**\n- Spin up compute resources for ML training\n- Create GPU instances for inference workloads\n- Set up development environments with H100 GPUs\n- Deploy distributed training with InfiniBand networking\n\n**Instance Types:**\n- \u0060gpu_8x_h100_sxm5\u0060: 8x NVIDIA H100 GPUs (high-performance, supports sector configuration for InfiniBand)\n- \u0060gpu_1x_h100_sxm5\u0060: 1x NVIDIA H100 GPU (standard)\n\n**Idempotency:**\n- Optional Idempotency-Key header prevents duplicate instance creation on retries\n- Responses cached for 10 minutes per unique key\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.", @@ -397,7 +408,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 37, + "Order": 38, "Title": "Delete Compute Instance", "Slug": "deletecomputeinstance", "Description": "Deletes a specific compute instance by its ID. This action is irreversible.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n- Instance must belong to the authenticated user\u0027s workspace\n\n**Key Features:**\n- Permanently remove compute instances\n- Free up compute resources\n- Stop billing for the instance\n- Clean up unused resources\n\n**Important:**\n- This action cannot be undone\n- All data on the instance will be lost\n- Instance will be immediately terminated\n- Billing stops after deletion\n\n**Common Use Cases:**\n- Clean up completed workloads\n- Remove failed or stuck instances\n- Manage compute costs\n- Free up quota for new instances\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.", @@ -408,7 +419,7 @@ "Setup": null }, { - "Order": 38, + "Order": 39, "Title": "Get Compute Instance", "Slug": "getcomputeinstance", "Description": "Retrieves detailed information about a specific compute instance by its ID.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n- Instance must belong to the authenticated user\u0027s workspace\n\n**Key Features:**\n- Get current instance status and configuration\n- Access instance IP address when available\n- View region and sector placement\n- Check creator information\n\n**Common Use Cases:**\n- Monitor specific instance status\n- Retrieve connection details (IP address)\n- Check instance readiness before use\n- Audit instance configuration\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.", @@ -419,7 +430,7 @@ "Setup": null }, { - "Order": 39, + "Order": 40, "Title": "List Compute Instances", "Slug": "listcomputeinstances", "Description": "Returns a list of all compute instances belonging to the authenticated user\u0027s workspace.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n\n**Key Features:**\n- View all instances regardless of status\n- Includes instance configuration, region, and current status\n- Paginated results for large instance lists\n\n**Common Use Cases:**\n- Monitor all active compute resources\n- Check instance status and availability\n- Audit compute resource usage\n- Build compute management dashboards\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.", @@ -430,7 +441,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 40, + "Order": 41, "Title": "Create API Key", "Slug": "createapikey", "Description": "Creates a new API key with the specified alias.\n\n**Requirements:**\n- Authentication required via admin API key\n\n**Important Security Notice:**\nThe \u0060key_secret\u0060 is only returned once at creation time. Store it securely immediately\nas it cannot be retrieved again. If lost, you must delete the key and create a new one.\n\n**Key Features:**\n- Create API keys programmatically without UI access\n- Assign meaningful aliases for key identification\n- Keys are immediately active upon creation\n\n**Common Use Cases:**\n- Programmatic key provisioning for CI/CD pipelines\n- Self-serve key generation for team members\n- Automated key rotation workflows\n- Integration with secret management systems", @@ -441,7 +452,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 41, + "Order": 42, "Title": "Delete API Key", "Slug": "deleteapikey", "Description": "Deletes an API key by its ID. This action is irreversible.\n\n**Requirements:**\n- Authentication required via admin API key\n- Key must belong to the authenticated user\u0027s workspace\n\n**Key Features:**\n- Permanently revoke API key access\n- Idempotent operation (safe to retry)\n- Optional Idempotency-Key header for safe retries\n\n**Important:**\n- This action cannot be undone\n- Any applications using this key will immediately lose access\n- Returns 204 even if the key doesn\u0027t exist (idempotent behavior)\n\n**Common Use Cases:**\n- Revoke compromised keys\n- Clean up unused keys\n- Implement key rotation (delete old, create new)\n- Offboard team members", @@ -452,7 +463,7 @@ "Setup": null }, { - "Order": 42, + "Order": 43, "Title": "List API Keys", "Slug": "listapikeys", "Description": "Returns a list of all API keys belonging to the authenticated user\u0027s workspace.\n\n**Requirements:**\n- Authentication required via admin API key\n\n**Key Features:**\n- View all API keys with their aliases and creation dates\n- Optionally expand to include creator information\n- Paginated results for workspaces with many keys\n\n**Expansion Options:**\n- \u0060expand=creator_info\u0060: Include creator_nickname and creator_email for each key\n\n**Common Use Cases:**\n- Audit existing API keys\n- Find keys by alias\n- Monitor key creation activity\n- Build key management interfaces", @@ -463,7 +474,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 43, + "Order": 44, "Title": "Get platform metadata", "Slug": "getmeta", "Description": "Returns platform metadata including webhook IP ranges for allowlisting.\n\nIf your infrastructure requires allowlisting IP addresses for incoming webhook\nrequests, this endpoint provides the current list of IP ranges used by fal.ai\nwebhooks in CIDR notation.", @@ -474,7 +485,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 44, + "Order": 45, "Title": "Delete request payloads", "Slug": "deleterequestpayloads", "Description": "Deletes the IO payloads and associated CDN output files for a specific request.\n\n**Important:**\n- Only **output** CDN files are deleted (input files may be used by other requests)\n- This action is irreversible\n- Requires authentication with an admin API key\n\n**What gets deleted:**\n- Request input/output payload data\n- CDN-hosted output files (images, videos, etc.)\n\n**What is NOT deleted:**\n- Input CDN files (may be referenced by other requests)\n\n**Response:**\n- Returns deletion status for each CDN file\n- Each result includes the file link and any error that occurred\n\n**Idempotency:**\n- Optional Idempotency-Key header prevents duplicate deletions on retries\n- Responses cached for 10 minutes per unique key\n\nSee [fal.ai docs](https://docs.fal.ai/model-apis/payloads) for more details about request payloads.", @@ -485,7 +496,7 @@ "Setup": null }, { - "Order": 45, + "Order": 46, "Title": "Estimate cost", "Slug": "estimatepricing", "Description": "Computes cost estimates using one of two methods:\n\n**1. Historical API Price** (\u0060historical_api_price\u0060):\n- Based on historical pricing per API call from past usage patterns\n- Takes \u0060call_quantity\u0060 (number of API calls) per endpoint\n- Useful for estimating based on actual historical usage patterns\n- Example: \u0022How much will 100 calls to flux/dev cost?\u0022\n\n**2. Unit Price** (\u0060unit_price\u0060):\n- Based on unit price \u00D7 expected billing units from pricing service\n- Takes \u0060unit_quantity\u0060 (number of billing units like images/videos) per endpoint\n- Useful when you know the expected output quantity\n- Example: \u0022How much will 50 images from flux/dev cost?\u0022\n\n**Authentication:** Required. Users must provide a valid API key.\nCustom pricing or discounts may be applied based on account status.\n\n**Common Use Cases:**\n- Pre-calculate costs for batch operations\n- Display cost estimates in user interfaces\n- Budget planning and cost optimization\n\nSee [fal.ai pricing](https://fal.ai/pricing) for more details.", @@ -496,7 +507,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 46, + "Order": 47, "Title": "Analytics", "Slug": "getanalytics", "Description": "Time-bucketed metrics per model endpoint, including request counts, success/error\nrates, and latency percentiles. \u0060prepare_duration\u0060 reflects queue/prepare\ntime before execution; \u0060duration\u0060 is request execution time. Use with the\nQueue/Webhooks flow to monitor SLAs.\n\n**Metric Selection:**\nYou must specify which metrics to include using the \u0060expand\u0060 query\nparameter. Only requested metrics will be populated in the response,\nallowing you to optimize query performance and data transfer.\n\n**Available Metrics:**\n\nThe \u0060expand\u0060 parameter accepts these values, grouped by category:\n\n*Volume*\n- \u0060request_count\u0060: Total number of requests in the time bucket\n- \u0060success_count\u0060: Successful requests (2xx responses)\n- \u0060user_error_count\u0060: User errors (4xx responses)\n- \u0060error_count\u0060: Server errors (5xx responses)\n\n*Error type breakdown*\n- \u0060startup_error_count\u0060: Startup errors (startup timeout, scheduling failure)\n- \u0060connection_error_count\u0060: Connection errors (timeout, disconnected, refused)\n- \u0060timeout_error_count\u0060: Request timeout errors\n- \u0060runtime_error_count\u0060: Runtime errors (internal error, server error)\n\n*Queue / prepare latency*\n- \u0060p50_prepare_duration\u0060, \u0060p75_prepare_duration\u0060, \u0060p90_prepare_duration\u0060, \u0060p95_prepare_duration\u0060, \u0060p99_prepare_duration\u0060: Time from request submission until execution starts\n\n*Request execution latency*\n- \u0060p25_duration\u0060, \u0060p50_duration\u0060, \u0060p75_duration\u0060, \u0060p90_duration\u0060, \u0060p95_duration\u0060, \u0060p99_duration\u0060: Time spent processing the request\n\n*Cold boot*\n- \u0060cold_boot_count\u0060: Requests with cold boot (startup \u003E 1s)\n- \u0060p50_cold_boot_duration\u0060, \u0060p75_cold_boot_duration\u0060, \u0060p90_cold_boot_duration\u0060: Cold boot duration percentiles\n\n*Billing*\n- \u0060total_billable_duration\u0060: Aggregate billed execution time\n\n**Key Features:**\n- Selective metric inclusion via expand parameter\n- Performance metrics (latency percentiles, duration stats)\n- Reliability metrics (success/error rates, request counts)\n- Error type breakdown (startup, connection, timeout, runtime)\n- Cold boot metrics (count, latency percentiles)\n- Billing duration tracking\n- Time-bucketed data for trend analysis\n- Single or multi-model analytics\n- Flexible date range and timeframe options\n\n**Common Use Cases:**\n- Monitor model performance and reliability\n- Generate performance dashboards\n- Analyze latency trends and patterns\n- Track error rates and success metrics\n\nSee [Queue API docs](https://docs.fal.ai/model-apis/model-endpoints/queue) for more details.", @@ -507,7 +518,7 @@ "Setup": null }, { - "Order": 47, + "Order": 48, "Title": "Billing Events", "Slug": "getbillingevents", "Description": "Returns paginated individual billing event records with filters\nfor endpoint and date range. Each record includes the request ID, timestamp,\nendpoint, and output units billed.\n\n**Key Features:**\n- Individual billing event records for each API request\n- Flexible date range filtering\n- Optional endpoint filtering\n- Cursor-based pagination for efficient large dataset queries\n- Limited to 10000 records per page for performance\n- Date range capped at 90 days per request\n\n**Common Use Cases:**\n- Audit individual billing events\n- Track request patterns and volumes\n- Debug specific requests by ID\n- Monitor billing unit consumption per request\n\nSee [fal.ai docs](https://docs.fal.ai/model-apis/faq) for more details.", @@ -518,7 +529,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 48, + "Order": 49, "Title": "Model search", "Slug": "getmodels", "Description": "Unified endpoint for discovering model endpoints. Supports three usage modes:\n\n**1. List Mode** (no parameters):\nPaginated list of all available model endpoints with minimal metadata.\n\n**2. Find Mode** (\u0060endpoint_id\u0060 parameter):\nRetrieve specific model endpoint(s) by ID. Supports single or multiple IDs.\n\n**3. Search Mode** (search parameters):\nFilter models by free-text query, category, or status.\n\n**Expansion:**\nUse \u0060expand\u0060 to include additional data in each model object:\n- \u0060openapi-3.0\u0060 \u2014 full OpenAPI 3.0 schema in the \u0060openapi\u0060 field\n- \u0060enterprise_status\u0060 \u2014 enterprise readiness status (\u0060ready\u0060 or \u0060pending\u0060) in the \u0060enterprise_status\u0060 field\n\n**Examples of \u0060endpoint_id\u0060 values:**\n- \u0060fal-ai/flux/dev\u0060\n- \u0060fal-ai/wan/v2.2-a14b/text-to-video\u0060\n- \u0060fal-ai/minimax/video-01/image-to-video\u0060\n- \u0060fal-ai/hunyuan3d-v21\u0060\n\nSee [fal.ai Model APIs](https://docs.fal.ai/model-apis) for more details.\n\n**Authentication:** Optional. Providing an API key grants higher rate limits.\n\n**Common Use Cases:**\n- Browse available models for integration\n- Retrieve metadata for specific endpoints\n- Search for models by category or keywords\n- Get OpenAPI schemas for code generation\n- Build model selection interfaces", @@ -529,7 +540,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 49, + "Order": 50, "Title": "Pricing", "Slug": "getpricing", "Description": "Returns unit pricing for requested endpoint IDs. Most models use\n**output-based** pricing (e.g., per image/video with proportional\nadjustments for resolution/length). Some models use **GPU-based** pricing\ndepending on architecture. Values are expressed per model\u0027s billing unit\nin a given currency.\n\n**Authentication:** Required. Users must provide a valid API key. \nCustom pricing or discounts may be applied based on account status.\n\n**Common Use Cases:**\n- Display pricing in user interfaces\n- Compare pricing across different models\n- Build cost estimation tools\n- Check current billing rates\n\nSee [fal.ai pricing](https://fal.ai/pricing) for more details.", @@ -540,7 +551,7 @@ "Setup": null }, { - "Order": 50, + "Order": 51, "Title": "Usage", "Slug": "getusage", "Description": "Returns paginated usage records for your workspace with filters for endpoint,\nuser, date range, and auth method. Each item includes the billed unit\nquantity and unit price used to compute cost.\n\n**Key Features:**\n- Usage data for all endpoints or filtered by specific endpoint(s)\n- Flexible date range filtering\n- User-specific usage tracking\n- Detailed usage line items with unit quantity and price\n- Paginated results for large datasets\n\n**Common Use Cases:**\n- Generate usage reports for all endpoints or specific models\n- Track usage patterns\n- Monitor endpoint usage across different auth methods\n- Build usage dashboards and visualizations\n\nSee [fal.ai docs](https://docs.fal.ai/model-apis/faq) for more details.", @@ -551,7 +562,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 51, + "Order": 52, "Title": "List requests by endpoint(s)", "Slug": "listrequestsbyendpoint", "Description": "Lists requests for one or more endpoints (same \u0060endpoint_id\u0060 style as usage/explore:\ncomma-separated or repeated query params, up to 50 IDs).\n\n**Authentication:** Requires API key (user or enterprise).\n\n**Filters:**\n- Time range via start / end. If \u0060start\u0060 is omitted, defaults to the last 24 hours \u2014 unless \u0060request_id\u0060 is provided, in which case the default start bound is widened to 90 days.\n- Status (success, error, user_error)\n- Request ID\n- Pagination via cursor/limit (limit defaults to 50, max 100)\n\n**Sorting:**\n- By end time (default) or duration\n\n**Expansions:**\n- Include payloads by adding expand=payloads", @@ -562,7 +573,7 @@ "Setup": null }, { - "Order": 52, + "Order": 53, "Title": "Search Requests", "Slug": "searchrequests", "Description": "Search, filter, and browse your request history. Supports three modes:\n\n**1. Semantic Search** (\u0060query\u0060, \u0060image_url\u0060, or \u0060video_url\u0060 parameter):\nFind visually or conceptually similar results using AI embeddings. Provide a text\nquery for text-to-image search, an image URL for image-to-image similarity search,\nor a video URL for video-to-image similarity search.\n\n**2. Filtered Browse** (no \u0060query\u0060, \u0060image_url\u0060, or \u0060video_url\u0060):\nBrowse request history with hard filters. Returns results ordered by creation date (newest first).\n\n**3. Semantic \u002B Filters** (search params AND filter params):\nCombine semantic search with hard filters. Filters narrow the candidate set before\nranking by similarity.\n\n**Filter Options:**\n- \u0060endpoint_id\u0060: Filter by one or more fal endpoints (comma-separated or repeated, up to 50 IDs)\n- \u0060exclude_api_requests\u0060 / \u0060only_api_requests\u0060: Filter by request source\n\n**Examples:**\n- Semantic text search: \u0060?query=sunset\u002Blandscape\u0060\n- Image similarity: \u0060?image_url=https://...\u0026min_similarity=0.5\u0060\n- Filtered search: \u0060?query=portrait\u0026endpoint_id=fal-ai/flux/dev\u0060\n- Browse across multiple endpoints: \u0060?endpoint_id=fal-ai/flux/dev,fal-ai/flux/schnell\u0060", @@ -573,7 +584,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 53, + "Order": 54, "Title": "Organization Teams", "Slug": "getorganizationteams", "Description": "Returns the list of teams in your organization with their details.\n\n\u003E **Availability:** This endpoint is available to enterprise customers with organizations enabled. Contact your account team or support@fal.ai to request access.\n\nMust be called with an admin API key on the organization\u0027s root team.\n\n**Key Features:**\n- List all teams within the organization\n- Identify the organization\u0027s root team via \u0060is_org_root\u0060\n- View team usernames and display names\n\nSee [fal.ai docs](https://docs.fal.ai) for more details.", @@ -584,7 +595,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 54, + "Order": 55, "Title": "Organization Usage", "Slug": "getorganizationusage", "Description": "Returns paginated usage records across all teams and product lines in your\norganization, with each record attributed to a specific team via the\n\u0060username\u0060 field and a product line via the \u0060product\u0060 field.\n\nCovers all three fal product lines:\n- \u0060model_apis\u0060 \u2014 model API endpoint calls (e.g. \u0060fal-ai/flux/dev\u0060)\n- \u0060serverless\u0060 \u2014 fal Serverless SDK billing\n- \u0060compute\u0060 \u2014 fal Compute (raw instance time)\n\n\u003E **Availability:** This endpoint is available to enterprise customers with organizations enabled. Contact your account team or support@fal.ai to request access.\n\nMust be called with an admin API key on the organization\u0027s root team.\n\n**Key Features:**\n- Organization-wide usage data across all teams and products\n- Filter by team (\u0060team_username\u0060), product line (\u0060product\u0060), endpoint, date range, and auth method\n- Per-team and per-product attribution on every usage record\n- Paginated time series and aggregate summary views\n\nSee [fal.ai docs](https://docs.fal.ai) for more details.", @@ -595,7 +606,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 55, + "Order": 56, "Title": "Download file", "Slug": "serverlessdownloadfile", "Description": "Downloads a file by its path. Proxies the underlying storage response.", @@ -606,7 +617,7 @@ "Setup": null }, { - "Order": 56, + "Order": 57, "Title": "Flush Application Queue", "Slug": "serverlessflushappqueue", "Description": "Flushes all pending requests from an application\u0027s queue.\n\n**Authentication:** Required via API key\n\n**Idempotency:**\n- Optional \u0060Idempotency-Key\u0060 header prevents duplicate flushes on retries\n- Responses cached for 10 minutes per unique key\n\n**Use Cases:**\n- Clear stuck or outdated requests from the queue\n- Reset queue state during development or testing\n- Cancel all pending requests for an application\n\n**Important:**\n- This operation is irreversible\n- All pending requests in the queue will be cancelled\n- Requests already being processed will not be affected", @@ -617,7 +628,7 @@ "Setup": null }, { - "Order": 57, + "Order": 58, "Title": "Analytics", "Slug": "serverlessgetanalytics", "Description": "Time-bucketed metrics for your serverless app endpoints, including request counts,\nsuccess/error rates, and latency percentiles across all inbound traffic.\n\u0060prepare_duration\u0060 reflects queue/prepare time before execution;\n\u0060duration\u0060 is request execution time.\n\nThis endpoint shows all inbound requests to endpoints you own \u2014 not just\nyour own calls. This is ideal for monitoring your deployed apps, tracking\nSLAs, and exporting data to tools like BigQuery or Grafana. You must own\nall requested endpoints; returns 403 otherwise.\n\n**Metric Selection:**\nYou must specify which metrics to include using the \u0060expand\u0060 query\nparameter. Only requested metrics will be populated in the response,\nallowing you to optimize query performance and data transfer.\n\n**Available Metrics:**\n\nThe \u0060expand\u0060 parameter accepts these values, grouped by category:\n\n*Volume*\n- \u0060request_count\u0060: Total number of requests in the time bucket\n- \u0060success_count\u0060: Successful requests (2xx responses)\n- \u0060user_error_count\u0060: User errors (4xx responses)\n- \u0060error_count\u0060: Server errors (5xx responses)\n\n*Error type breakdown*\n- \u0060startup_error_count\u0060: Startup errors (startup timeout, scheduling failure)\n- \u0060connection_error_count\u0060: Connection errors (timeout, disconnected, refused)\n- \u0060timeout_error_count\u0060: Request timeout errors\n- \u0060runtime_error_count\u0060: Runtime errors (internal error, server error)\n\n*Queue / prepare latency*\n- \u0060p50_prepare_duration\u0060, \u0060p75_prepare_duration\u0060, \u0060p90_prepare_duration\u0060, \u0060p95_prepare_duration\u0060, \u0060p99_prepare_duration\u0060: Time from request submission until execution starts\n\n*Request execution latency*\n- \u0060p25_duration\u0060, \u0060p50_duration\u0060, \u0060p75_duration\u0060, \u0060p90_duration\u0060, \u0060p95_duration\u0060, \u0060p99_duration\u0060: Time spent processing the request\n\n*Cold boot*\n- \u0060cold_boot_count\u0060: Requests with cold boot (startup \u003E 1s)\n- \u0060p50_cold_boot_duration\u0060, \u0060p75_cold_boot_duration\u0060, \u0060p90_cold_boot_duration\u0060: Cold boot duration percentiles\n\n*Billing*\n- \u0060total_billable_duration\u0060: Aggregate billed execution time\n\n**Key Features:**\n- See all traffic to your apps across all callers\n- Selective metric inclusion via expand parameter\n- Performance metrics (latency percentiles, duration stats)\n- Reliability metrics (success/error rates, request counts)\n- Error type breakdown (startup, connection, timeout, runtime)\n- Cold boot metrics (count, latency percentiles)\n- Billing duration tracking\n- Time-bucketed data for trend analysis\n- Flexible date range and timeframe options\n\n**Common Use Cases:**\n- Monitor your serverless app performance and reliability\n- Export analytics to your own observability tools\n- Analyze latency trends across all callers\n- Track error rates and SLA compliance", @@ -628,7 +639,7 @@ "Setup": null }, { - "Order": 58, + "Order": 59, "Title": "Queue Size", "Slug": "serverlessgetappqueueinfo", "Description": "Retrieves the current queue size for a specific application.", @@ -639,7 +650,7 @@ "Setup": null }, { - "Order": 59, + "Order": 60, "Title": "Metrics", "Slug": "serverlessgetmetrics", "Description": "Returns Prometheus-compatible metrics in text format for integration into your\nobservability stack\n\n**Authentication:** Required - Uses API key authentication\n\n**Format:** Returns text/plain in Prometheus exposition format\n\n**Common Use Cases:**\n- Export app stats to your observability provider (grafana, datadog etc)\n- Track runner health and performance\n- Set up alerts and monitoring\n\nSee [Prometheus documentation](https://prometheus.io/docs/instrumenting/exposition_formats/) for format details.", @@ -650,7 +661,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 60, + "Order": 61, "Title": "Runner State History", "Slug": "serverlessgetrunnerhistory", "Description": "Returns historical runner counts by state (running, idle, pending, draining)\nfor an application, bucketed over time.\n\n**Use cases:**\n- Capacity/utilization analysis: compare idle vs running over days or weeks\n to see how much reserved capacity goes unused (use \u0060aggregation=avg\u0060)\n- Incident forensics: correlate error spikes with runner drops or drain\n events around the incident window (use \u0060aggregation=max\u0060)\n\n**Time range:** up to 90 days of history. Defaults to the last 24 hours when\n\u0060start\u0060/\u0060end\u0060 are omitted. Bucket size is auto-detected from the range\nunless \u0060timeframe\u0060 is specified.\n\n**Authentication:** Required via API key. Only the app owner can query it.", @@ -661,7 +672,7 @@ "Setup": null }, { - "Order": 61, + "Order": 62, "Title": "Usage", "Slug": "serverlessgetusage", "Description": "Time-bucketed, aggregated serverless compute usage for **your own account** \u2014\nthe machine-seconds your deployed serverless apps consumed, priced with your\nmachine prices and net of discounts. This matches the serverless portion of the\ndashboard usage view. Unlike \u0060/v1/models/usage\u0060 (which reports model API\nendpoint calls), this reports the \u0060sdk_billing_event\u0060 compute spend of the apps\nyou run on fal Serverless. Requires an \u0060ADMIN\u0060-scoped API key (this endpoint\nreturns billing and usage data, which the standard \u0060API\u0060 key scope does not\ninclude); results are always scoped to the apps you own.\n\n**Filtering by app:**\n- \u0060app\u0060 \u2014 exact match on one or more app names (comma-separated or repeated,\n up to 50): \u0060?app=my-app-dev,my-app-prod\u0060. Use the value exactly as it appears\n in the response \u0060app\u0060 field.\n- \u0060search\u0060 \u2014 case-insensitive substring match on the app name, for when you\n know the name but not the exact environment/version suffix: \u0060?search=my-app\u0060\n returns every \u0060my-app*\u0060 variant.\n- Provide both to AND them. Omit both to return every app you own \u2014 useful for\n discovering the exact app names to filter on.\n\n**Expansions:**\n- \u0060time_series\u0060: usage grouped into time buckets (default)\n- \u0060summary\u0060: a single aggregate row per app \u00D7 machine type across the window\n\n**Notes:**\n- Each row is machine-seconds (\u0060unit\u0060 is always \u0060\u0022second\u0022\u0060); surge and\n non-surge usage of the same app/machine come back as separate rows\n (\u0060is_surge\u0060), so sum across them for a per-app total.\n- Time-series \u0060bucket\u0060 timestamps are returned in the \u0060timezone\u0060 you request\n (ISO 8601 with offset, e.g. \u00602025-01-15T00:00:00-05:00\u0060), which also controls\n how usage is grouped into buckets.\n\n**Common Use Cases:**\n- Track your serverless apps\u0027 compute consumption and cost over time\n- Break down spend per app, environment, and machine type\n- Export usage to your own billing/observability tooling", @@ -672,7 +683,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 62, + "Order": 63, "Title": "Application Events", "Slug": "serverlesslistappevents", "Description": "Returns the operational event history for an application: deployments,\nconfiguration changes, and runner lifecycle transitions (started, failed,\ndraining, etc.), newest first.\n\n**Use cases:**\n- Incident correlation: answer \u0022what changed around this time?\u0022 \u2014 did a\n deploy, config change, or runner failure coincide with an error spike?\n- Deployment audit: see when revisions went out and who triggered them\n\n**Time range:** defaults to the last 24 hours when \u0060start\u0060/\u0060end\u0060 are\nomitted. Use \u0060category\u0060 filters to narrow to specific event types.\n\n**Authentication:** Required via API key. Only the app owner can query it.", @@ -683,7 +694,7 @@ "Setup": null }, { - "Order": 63, + "Order": 64, "Title": "List Applications", "Slug": "serverlesslistapps", "Description": "Lists the serverless applications owned by the authenticated account, with\nthe configuration needed for follow-up calls.\n\nEach application includes its canonical \u0060endpoint_id\u0060 (\u0027\u003Cowner\u003E/\u003Cname\u003E\u0027),\nwhich is the identifier accepted by the analytics, requests, logs, and\nqueue endpoints \u2014 use this endpoint to discover identifiers instead of\nasking users to paste them.\n\n**Authentication:** Required via API key. Only applications owned by the\nauthenticated account are returned.", @@ -694,7 +705,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 64, + "Order": 65, "Title": "List files (directory)", "Slug": "serverlesslistdirectory", "Description": "Lists files and folders within the specified directory path.", @@ -705,7 +716,7 @@ "Setup": null }, { - "Order": 65, + "Order": 66, "Title": "List requests by endpoint(s)", "Slug": "serverlesslistrequestsbyendpoint", "Description": "Lists requests for one or more endpoints owned by the authenticated user.\nUse repeated or comma-separated \u0060endpoint_id\u0060 (same as other platform list APIs).\n\n**Authentication:** Requires API key.\n\n**Filters:**\n- Time range via start / end. If \u0060start\u0060 is omitted, defaults to the last 24 hours \u2014 unless \u0060request_id\u0060 is provided, in which case the default start bound is widened to 90 days.\n- Status (success, error, user_error)\n- Request ID\n- Pagination via cursor/limit (limit defaults to 50, max 100)\n\n**Sorting:**\n- By end time (default) or duration\n\n**Expansions:**\n- Include payloads by adding expand=payloads\n- Include per-request \u0060billable_units\u0060 by adding expand=billing (endpoint owner only)", @@ -716,7 +727,7 @@ "Setup": null }, { - "Order": 66, + "Order": 67, "Title": "List files (root)", "Slug": "serverlesslistroot", "Description": "Lists files and folders in the root of your project storage.", @@ -727,7 +738,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 67, + "Order": 68, "Title": "Logs history (paginated)", "Slug": "serverlesslogshistory", "Description": "Returns paginated historical logs that match the provided filters.", @@ -738,7 +749,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 68, + "Order": 69, "Title": "Logs stream (SSE)", "Slug": "serverlesslogsstream", "Description": "Streams live logs that match the provided filters using Server-Sent Events.", @@ -749,7 +760,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 69, + "Order": 70, "Title": "Upload file from URL", "Slug": "serverlessuploadfromurl", "Description": "Creates a new file at the target path by downloading it from the provided URL.", @@ -760,7 +771,7 @@ "Setup": null }, { - "Order": 70, + "Order": 71, "Title": "Upload local file (multipart/form-data)", "Slug": "serverlessuploadlocalfile", "Description": "Uploads a local file using multipart/form-data. The file field name must be \u0060file_upload\u0060.", @@ -771,7 +782,7 @@ "Setup": null }, { - "Order": 71, + "Order": 72, "Title": "Get file ACL", "Slug": "getstoragefileacl", "Description": "Returns the Access Control List currently applied to a fal CDN file.\n\nThe ACL consists of a default decision (\u0060allow\u0060, \u0060forbid\u0060, or \u0060hide\u0060) plus\noptional per-user rules that override the default. Rule users are returned as\nnicknames where possible.\n\n**Authentication:** Required. The API key must have the \u0060assets:read\u0060 permission.", @@ -782,7 +793,7 @@ "Setup": null }, { - "Order": 72, + "Order": 73, "Title": "Get storage settings", "Slug": "getstoragesettings", "Description": "Returns the account-level storage lifecycle settings applied to newly uploaded\nfal CDN files:\n\n- \u0060expiration_duration_seconds\u0060: how long files live before being\n automatically deleted (null disables auto-expiration).\n- \u0060initial_acl\u0060: the default ACL applied to new uploads (null means the\n system default, which is public).\n\nBoth fields are null when the account has never saved settings.\n\n**Authentication:** Required. The API key must have the \u0060account:settings:read\u0060 permission.", @@ -793,7 +804,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 73, + "Order": 74, "Title": "Set file ACL", "Slug": "setstoragefileacl", "Description": "Replaces the Access Control List of a fal CDN file.\n\nThe ACL consists of a default decision (\u0060allow\u0060, \u0060forbid\u0060, or \u0060hide\u0060) plus\noptional per-user rules that override the default. Rule users may be specified\nby nickname or user ID. Setting \u0060default\u0060 to \u0060allow\u0060 with no rules makes the\nfile public; \u0060forbid\u0060 or \u0060hide\u0060 restricts it to the rules you provide.\n\nRules referencing users that do not exist are dropped. The response reflects\nthe ACL actually applied, so verify it contains the rules you sent.\n\n**Authentication:** Required. The API key must have the \u0060assets:write\u0060 permission.", @@ -804,7 +815,7 @@ "Setup": null }, { - "Order": 74, + "Order": 75, "Title": "Sign file URL", "Slug": "signstoragefileurl", "Description": "Creates a signed URL that grants temporary access to a fal CDN file,\nregardless of its ACL. Useful for sharing access-restricted files.\n\nThe signature is valid for \u0060expiration_seconds\u0060 (up to 7 days).\n\n**Authentication:** Required. The API key must have the \u0060assets:read\u0060 permission.", @@ -815,7 +826,7 @@ "Setup": null }, { - "Order": 75, + "Order": 76, "Title": "Update storage settings", "Slug": "updatestoragesettings", "Description": "Replaces the account-level storage lifecycle settings applied to newly\nuploaded fal CDN files. Omitted or null fields are cleared (reset to the\nsystem default), so always send the full desired configuration.\n\nACL rules referencing users that do not exist are dropped. The response\nreflects the settings actually saved, so verify it contains the rules you sent.\n\nThese are the same settings that the per-request\n\u0060X-Fal-Object-Lifecycle-Preference\u0060 header overrides on individual requests.\n\n**Authentication:** Required. The API key must have the \u0060account:settings:write\u0060 permission.", @@ -826,7 +837,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 76, + "Order": 77, "Title": "Create a workflow", "Slug": "createworkflow", "Description": "Create a new workflow owned by the authenticated user.\n\n**Authentication:** Required.\n\n**Common Use Cases:**\n- Save a newly built workflow\n- Programmatically provision workflows\n\n**Note:** Workflow names must be unique within your namespace. Creating a\nworkflow with a name you already use returns a 400 validation error.", @@ -837,7 +848,7 @@ "Setup": "This example assumes \u0060using Fal;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 77, + "Order": 78, "Title": "Get workflow details", "Slug": "getworkflow", "Description": "Get detailed information about a specific workflow, including its full contents/definition.\n\n**Authentication:** Required.\n\n**Common Use Cases:**\n- Load a workflow for editing\n- View workflow configuration\n- Export workflow definition", @@ -848,7 +859,7 @@ "Setup": null }, { - "Order": 78, + "Order": 79, "Title": "List user workflows", "Slug": "listworkflows", "Description": "List workflows for the authenticated user with optional search and filtering.\n\n**Features:**\n- Paginated results with cursor-based pagination\n- Search by workflow name or title\n- Filter by model endpoints used in the workflow\n\n**Authentication:** Required. Returns only workflows owned by the authenticated user.\n\n**Common Use Cases:**\n- Display user\u0027s workflow library\n- Search for specific workflows\n- Find workflows using particular models", diff --git a/src/libs/Fal/openapi.json b/src/libs/Fal/openapi.json index 30fec42..d3fe5f6 100644 --- a/src/libs/Fal/openapi.json +++ b/src/libs/Fal/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"Platform APIs","version":"v1","description":"fal REST API for programmatic access to platform resources."},"servers":[{"url":"https://api.fal.ai/v1","description":"Production server"}],"components":{"securitySchemes":{"adminApiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"Admin API key must be prefixed with \"Key \", e.g. Authorization: Key YOUR_ADMIN_API_KEY"},"apiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"API key must be prefixed with \"Key \", e.g. Authorization: Key YOUR_API_KEY"}},"schemas":{},"parameters":{}},"paths":{"/models":{"get":{"operationId":"getModels","summary":"Model search","x-mint":{"href":"/platform-apis/v1/models","mcp":{"enabled":true},"metadata":{"sidebarTitle":"Model Search"}},"description":"\nUnified endpoint for discovering model endpoints. Supports three usage modes:\n\n**1. List Mode** (no parameters):\nPaginated list of all available model endpoints with minimal metadata.\n\n**2. Find Mode** (`endpoint_id` parameter):\nRetrieve specific model endpoint(s) by ID. Supports single or multiple IDs.\n\n**3. Search Mode** (search parameters):\nFilter models by free-text query, category, or status.\n\n**Expansion:**\nUse `expand` to include additional data in each model object:\n- `openapi-3.0` — full OpenAPI 3.0 schema in the `openapi` field\n- `enterprise_status` — enterprise readiness status (`ready` or `pending`) in the `enterprise_status` field\n\n**Examples of `endpoint_id` values:**\n- `fal-ai/flux/dev`\n- `fal-ai/wan/v2.2-a14b/text-to-video`\n- `fal-ai/minimax/video-01/image-to-video`\n- `fal-ai/hunyuan3d-v21`\n\nSee [fal.ai Model APIs](https://docs.fal.ai/model-apis) for more details.\n\n**Authentication:** Optional. Providing an API key grants higher rate limits.\n\n**Common Use Cases:**\n- Browse available models for integration\n- Retrieve metadata for specific endpoints\n- Search for models by category or keywords\n- Get OpenAPI schemas for code generation\n- Build model selection interfaces\n ","tags":["Models"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Endpoint ID(s) to retrieve (e.g., 'fal-ai/flux/dev'). Can be a single value or multiple values (1-50 models). When combined with search params, narrows results to these IDs. Use array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev","fal-ai/flux-pro"]},"required":false,"description":"Endpoint ID(s) to retrieve (e.g., 'fal-ai/flux/dev'). Can be a single value or multiple values (1-50 models). When combined with search params, narrows results to these IDs. Use array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Free-text search query to filter models by name, description, or category","example":"text to image"},"required":false,"description":"Free-text search query to filter models by name, description, or category","name":"q","in":"query"},{"schema":{"type":"string","description":"Filter by category (e.g., 'text-to-image', 'image-to-video', 'training')","example":"text-to-image"},"required":false,"description":"Filter by category (e.g., 'text-to-image', 'image-to-video', 'training')","name":"category","in":"query"},{"schema":{"type":"string","enum":["active","deprecated"],"description":"Filter models by status - omit to include all statuses","example":"active"},"required":false,"description":"Filter models by status - omit to include all statuses","name":"status","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Fields to expand in the response. Supported values: 'openapi-3.0' (includes full OpenAPI 3.0 schema in 'openapi' field), 'enterprise_status' (includes enterprise readiness status)","example":["openapi-3.0","enterprise_status"]},"required":false,"description":"Fields to expand in the response. Supported values: 'openapi-3.0' (includes full OpenAPI 3.0 schema in 'openapi' field), 'enterprise_status' (includes enterprise readiness status)","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Successfully retrieved model endpoints","content":{"application/json":{"schema":{"type":"object","properties":{"models":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Stable identifier used to call the model (e.g., 'fal-ai/wan/v2.2-a14b/text-to-video', 'fal-ai/minimax/video-01/image-to-video', 'fal-ai/hunyuan3d-v21')"},"metadata":{"type":"object","properties":{"display_name":{"type":"string","description":"Human-readable label shown on Explore/Model pages"},"category":{"type":"string","description":"Model category (e.g., 'text-to-image', 'image-to-video', 'text-to-video', 'image-to-3d', 'training')"},"description":{"type":"string","description":"Brief description of the model's capabilities and use cases"},"status":{"type":"string","enum":["active","deprecated"],"description":"'active' or 'deprecated'. Newest models are surfaced in Explore and may be flagged as 'new/beta' in tags"},"tags":{"type":"array","items":{"type":"string"},"description":"Freeform tags such as 'new', 'beta', 'pro', or 'turbo' (Explore badges)"},"updated_at":{"type":"string","description":"ISO8601 timestamp of when the model was last updated"},"is_favorited":{"type":["boolean","null"],"description":"Whether the model is favorited by the authenticated user (null when unauthenticated)"},"thumbnail_url":{"type":"string","description":"Main thumbnail image URL"},"thumbnail_animated_url":{"type":"string","description":"Animated thumbnail URL (optional)"},"model_url":{"type":"string","description":"Full model endpoint URL (e.g., https://fal.run/...)"},"github_url":{"type":"string","description":"License or GitHub URL (optional)"},"license_type":{"type":"string","enum":["commercial","research","private"],"description":"License type for the model (optional)"},"date":{"type":"string","description":"ISO8601 timestamp of model creation"},"group":{"type":"object","properties":{"key":{"type":"string","description":"Group key identifier"},"label":{"type":"string","description":"Human-readable group label"}},"required":["key","label"],"description":"Model group information (optional)"},"highlighted":{"type":"boolean","description":"Whether the model is highlighted (deprecated, always false)","deprecated":true,"example":false},"kind":{"type":"string","enum":["inference","training"],"description":"Model kind - inference or training (optional)"},"training_endpoint_ids":{"type":"array","items":{"type":"string"},"description":"Related training endpoint IDs (optional, only present when non-empty, for inference models)"},"inference_endpoint_ids":{"type":"array","items":{"type":"string"},"description":"Related inference endpoint IDs (optional, only present when non-empty, for training models)"},"stream_url":{"type":"string","description":"Streaming endpoint URL (optional)"},"duration_estimate":{"type":"number","description":"Estimated duration in minutes (optional)"},"pinned":{"type":"boolean","description":"Whether the model is pinned (deprecated, always false)","deprecated":true,"example":false}},"required":["display_name","category","description","status","tags","updated_at","is_favorited","thumbnail_url","model_url","date","highlighted","pinned"],"description":"Model metadata (optional - may be absent for endpoints without registry entries)"},"openapi":{"anyOf":[{"type":"object","properties":{"openapi":{"type":"string","description":"OpenAPI version (e.g., '3.0.4')"}},"required":["openapi"],"additionalProperties":{},"description":"OpenAPI 3.0 specification for the model"},{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Error code (e.g., 'expansion_failed')"},"message":{"type":"string","description":"Human-readable error message"}},"required":["code","message"],"description":"Error details for failed OpenAPI expansion"}},"required":["error"],"description":"Error encountered while expanding OpenAPI schema"}],"description":"OpenAPI 3.0 specification or error (present when expand=openapi-3.0 is requested)"},"enterprise_status":{"anyOf":[{"type":"string","enum":["ready","pending"],"description":"'ready' means approved for enterprise use, 'pending' means awaiting approval"},{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Error code (e.g., 'expansion_failed')"},"message":{"type":"string","description":"Human-readable error message"}},"required":["code","message"],"description":"Error details for failed enterprise status expansion"}},"required":["error"],"description":"Error encountered while expanding enterprise status"}],"description":"Enterprise readiness status (present when expand=enterprise_status is requested)"}},"required":["endpoint_id"],"description":"Model information with optional metadata and expandable fields"},"description":"Array of model information"},"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"}},"required":["models","has_more"],"description":"Response containing model data with pagination support"},"example":{"models":[{"endpoint_id":"fal-ai/flux/dev","metadata":{"display_name":"FLUX.1 [dev]","category":"text-to-image","description":"Fast text-to-image generation","status":"active","tags":["fast","pro"],"updated_at":"2025-01-15T12:00:00Z","is_favorited":false,"thumbnail_url":"https://fal.media/files/example.jpg","model_url":"https://fal.run/fal-ai/flux/dev","date":"2024-08-01T00:00:00Z","highlighted":false,"pinned":false}}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/models/pricing":{"get":{"operationId":"getPricing","summary":"Pricing","x-mint":{"href":"/platform-apis/v1/models/pricing","metadata":{"sidebarTitle":"Pricing"}},"description":"\nReturns unit pricing for requested endpoint IDs. Most models use\n**output-based** pricing (e.g., per image/video with proportional\nadjustments for resolution/length). Some models use **GPU-based** pricing\ndepending on architecture. Values are expressed per model's billing unit\nin a given currency.\n\n**Authentication:** Required. Users must provide a valid API key. \nCustom pricing or discounts may be applied based on account status.\n\n**Common Use Cases:**\n- Display pricing in user interfaces\n- Compare pricing across different models\n- Build cost estimation tools\n- Check current billing rates\n\nSee [fal.ai pricing](https://fal.ai/pricing) for more details.\n ","tags":["Models","Pricing"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":true,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Pricing information retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"prices":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier (e.g., 'fal-ai/wan/v2.2-a14b/text-to-video', 'fal-ai/minimax/video-01/image-to-video')"},"unit_price":{"type":"number","minimum":0,"description":"Base price per billing unit (often per generated output; may be per GPU-second for some models) in the specified currency"},"unit":{"type":"string","description":"Unit of measurement for billing: 'image', 'video', or provider-specific GPU/compute unit when applicable. Most models use output-based pricing."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"}},"required":["endpoint_id","unit_price","unit","currency"],"description":"Pricing information for a specific model endpoint. Most models use output-based pricing (e.g., per image/video with proportional adjustments for resolution/length). Some models use GPU-based pricing depending on architecture."},"description":"Pricing information for requested endpoints"}},"required":["next_cursor","has_more","prices"],"description":"Response containing pricing information for requested endpoints"},"example":{"prices":[{"endpoint_id":"fal-ai/flux/dev","unit_price":0.025,"unit":"image","currency":"USD"}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}}}}},"/models/pricing/estimate":{"post":{"operationId":"estimatePricing","summary":"Estimate cost","x-mint":{"href":"/platform-apis/v1/models/pricing/estimate","metadata":{"sidebarTitle":"Estimate Cost"}},"description":"\nComputes cost estimates using one of two methods:\n\n**1. Historical API Price** (`historical_api_price`):\n- Based on historical pricing per API call from past usage patterns\n- Takes `call_quantity` (number of API calls) per endpoint\n- Useful for estimating based on actual historical usage patterns\n- Example: \"How much will 100 calls to flux/dev cost?\"\n\n**2. Unit Price** (`unit_price`):\n- Based on unit price × expected billing units from pricing service\n- Takes `unit_quantity` (number of billing units like images/videos) per endpoint\n- Useful when you know the expected output quantity\n- Example: \"How much will 50 images from flux/dev cost?\"\n\n**Authentication:** Required. Users must provide a valid API key.\nCustom pricing or discounts may be applied based on account status.\n\n**Common Use Cases:**\n- Pre-calculate costs for batch operations\n- Display cost estimates in user interfaces\n- Budget planning and cost optimization\n\nSee [fal.ai pricing](https://fal.ai/pricing) for more details.\n ","tags":["Models","Pricing"],"security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"estimate_type":{"type":"string","enum":["historical_api_price"],"description":"Estimate type: historical API pricing based on past usage patterns"},"endpoints":{"type":"object","additionalProperties":{"type":"object","properties":{"call_quantity":{"type":"integer","minimum":1,"description":"Number of API calls to estimate (regardless of units per call)"}},"required":["call_quantity"]},"description":"Map of endpoint IDs to call quantities"}},"required":["estimate_type","endpoints"],"description":"Historical API price estimate: Calculates cost based on historical pricing per API call. Useful for estimating costs based on actual usage patterns."},{"type":"object","properties":{"estimate_type":{"type":"string","enum":["unit_price"],"description":"Estimate type: unit price calculation based on billing units"},"endpoints":{"type":"object","additionalProperties":{"type":"object","properties":{"unit_quantity":{"type":"number","minimum":0.000001,"description":"Number of billing units expected (e.g., number of images, videos, etc.)"}},"required":["unit_quantity"]},"description":"Map of endpoint IDs to unit quantities"}},"required":["estimate_type","endpoints"],"description":"Unit price estimate: Calculates cost based on unit price × billing units. Useful for estimating costs when you know the expected output quantity."}],"example":{"estimate_type":"historical_api_price","endpoints":{"fal-ai/flux/dev":{"call_quantity":100},"fal-ai/flux/schnell":{"call_quantity":50}}}},"examples":{"historical":{"value":{"estimate_type":"historical_api_price","endpoints":{"fal-ai/flux/dev":{"call_quantity":100},"fal-ai/flux/schnell":{"call_quantity":50}}},"summary":"Historical API price estimate"},"unit_price":{"value":{"estimate_type":"unit_price","endpoints":{"fal-ai/flux/dev":{"unit_quantity":50},"fal-ai/flux-pro":{"unit_quantity":25}}},"summary":"Unit price estimate"}}}}},"responses":{"200":{"description":"Cost estimates calculated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"estimate_type":{"type":"string","enum":["historical_api_price","unit_price"],"description":"The type of estimate that was performed"},"total_cost":{"type":"number","minimum":0,"description":"Total estimated cost across all endpoints"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"}},"required":["estimate_type","total_cost","currency"],"description":"Cost estimation response with total cost","example":{"estimate_type":"historical_api_price","total_cost":3.75,"currency":"USD"}},"examples":{"historical":{"value":{"estimate_type":"historical_api_price","total_cost":3.75,"currency":"USD"},"summary":"Historical API price estimate result"},"unit_price":{"value":{"estimate_type":"unit_price","total_cost":1.88,"currency":"USD"},"summary":"Unit price estimate result"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}}}}},"/models/usage":{"get":{"operationId":"getUsage","summary":"Usage","x-mint":{"href":"/platform-apis/v1/models/usage","metadata":{"sidebarTitle":"Usage"}},"description":"\nReturns paginated usage records for your workspace with filters for endpoint,\nuser, date range, and auth method. Each item includes the billed unit\nquantity and unit price used to compute cost.\n\n**Key Features:**\n- Usage data for all endpoints or filtered by specific endpoint(s)\n- Flexible date range filtering\n- User-specific usage tracking\n- Detailed usage line items with unit quantity and price\n- Paginated results for large datasets\n\n**Common Use Cases:**\n- Generate usage reports for all endpoints or specific models\n- Track usage patterns\n- Monitor endpoint usage across different auth methods\n- Build usage dashboards and visualizations\n\nSee [fal.ai docs](https://docs.fal.ai/model-apis/faq) for more details.\n ","tags":["Models","Usage"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":false,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific API key ID(s). Accepts 1-50 key IDs. Supports comma-separated values: ?api_key_id=key1,key2 or array syntax: ?api_key_id=key1&api_key_id=key2","example":["abc123"]},"required":false,"description":"Filter by specific API key ID(s). Accepts 1-50 key IDs. Supports comma-separated values: ?api_key_id=key1,key2 or array syntax: ?api_key_id=key1&api_key_id=key2","name":"api_key_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by team member login username(s) (nickname). Accepts 1-50 usernames. Supports comma-separated values: ?login_username=alice,bob or array syntax: ?login_username=alice&login_username=bob","example":["alice"]},"required":false,"description":"Filter by team member login username(s) (nickname). Accepts 1-50 usernames. Supports comma-separated values: ?login_username=alice,bob or array syntax: ?login_username=alice&login_username=bob","name":"login_username","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["time_series"],"description":"Data to include in the response. Use 'time_series' for time-bucketed data, 'summary' for aggregate statistics, 'auth_method' to include a formatted authentication method label, and 'auth_method_structured' to include a machine-readable auth method object (detail, api_key_id, login_username). At least one of 'time_series' or 'summary' is required.","example":["time_series","auth_method"]},"required":false,"description":"Data to include in the response. Use 'time_series' for time-bucketed data, 'summary' for aggregate statistics, 'auth_method' to include a formatted authentication method label, and 'auth_method_structured' to include a machine-readable auth method object (detail, api_key_id, login_username). At least one of 'time_series' or 'summary' is required.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Usage data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"time_series":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"Time bucket timestamp in user's timezone with offset (ISO8601 datetime)"},"results":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier that was used (e.g., 'fal-ai/flux/dev')"},"unit":{"type":"string","description":"The billing unit (e.g., 'image', 'video', or a GPU/compute unit for some models)"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit"},"unit_price":{"type":"number","minimum":0,"description":"Unit price used to compute charges for this line item"},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price)"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"},"auth_method":{"type":"string","description":"Authentication method label (e.g., 'Key 1', 'Key 2', 'User token'). Only populated when 'auth_method' is included in expand parameter."},"auth_method_structured":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable summary of the authentication method (key alias, login username, or 'User token'/'None')."},"api_key_id":{"type":"string","description":"API key ID, present when the request was made with an API key."},"login_username":{"type":"string","description":"Team member login username (nickname), present when the request was made with a user login token resolvable to a team member."}},"required":["detail"],"description":"Structured authentication method identity. Only populated when 'auth_method_structured' is included in expand parameter."}},"required":["endpoint_id","unit","quantity","unit_price","cost","currency"],"description":"Usage line item with billing details"},"description":"Usage records for this time bucket"}},"required":["bucket","results"],"description":"Time bucket with grouped usage records"},"description":"Time series usage data grouped by time bucket (when expand includes 'time_series'). Each bucket contains all usage records for that time period."},"summary":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier that was used (e.g., 'fal-ai/flux/dev')"},"unit":{"type":"string","description":"The billing unit (e.g., 'image', 'video', or a GPU/compute unit for some models)"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit"},"unit_price":{"type":"number","minimum":0,"description":"Unit price used to compute charges for this line item"},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price)"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"},"auth_method":{"type":"string","description":"Authentication method label (e.g., 'Key 1', 'Key 2', 'User token'). Only populated when 'auth_method' is included in expand parameter."},"auth_method_structured":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable summary of the authentication method (key alias, login username, or 'User token'/'None')."},"api_key_id":{"type":"string","description":"API key ID, present when the request was made with an API key."},"login_username":{"type":"string","description":"Team member login username (nickname), present when the request was made with a user login token resolvable to a team member."}},"required":["detail"],"description":"Structured authentication method identity. Only populated when 'auth_method_structured' is included in expand parameter."}},"required":["endpoint_id","unit","quantity","unit_price","cost","currency"],"description":"Aggregate usage statistics for the entire date range"},"description":"Aggregate statistics (when expand includes 'summary')"}},"required":["next_cursor","has_more"],"description":"Response containing usage data with pagination support"},"example":{"time_series":[{"bucket":"2025-01-15T00:00:00-05:00","results":[{"endpoint_id":"fal-ai/flux/dev","unit":"image","quantity":4,"unit_price":0.1,"cost":0.4,"currency":"USD","auth_method":"Production Key"}]}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}}}}},"/models/analytics":{"get":{"operationId":"getAnalytics","summary":"Analytics","x-mint":{"href":"/platform-apis/v1/models/analytics","metadata":{"sidebarTitle":"Analytics"}},"description":"\nTime-bucketed metrics per model endpoint, including request counts, success/error\nrates, and latency percentiles. `prepare_duration` reflects queue/prepare\ntime before execution; `duration` is request execution time. Use with the\nQueue/Webhooks flow to monitor SLAs.\n\n**Metric Selection:**\nYou must specify which metrics to include using the `expand` query\nparameter. Only requested metrics will be populated in the response,\nallowing you to optimize query performance and data transfer.\n\n**Available Metrics:**\n\nThe `expand` parameter accepts these values, grouped by category:\n\n*Volume*\n- `request_count`: Total number of requests in the time bucket\n- `success_count`: Successful requests (2xx responses)\n- `user_error_count`: User errors (4xx responses)\n- `error_count`: Server errors (5xx responses)\n\n*Error type breakdown*\n- `startup_error_count`: Startup errors (startup timeout, scheduling failure)\n- `connection_error_count`: Connection errors (timeout, disconnected, refused)\n- `timeout_error_count`: Request timeout errors\n- `runtime_error_count`: Runtime errors (internal error, server error)\n\n*Queue / prepare latency*\n- `p50_prepare_duration`, `p75_prepare_duration`, `p90_prepare_duration`, `p95_prepare_duration`, `p99_prepare_duration`: Time from request submission until execution starts\n\n*Request execution latency*\n- `p25_duration`, `p50_duration`, `p75_duration`, `p90_duration`, `p95_duration`, `p99_duration`: Time spent processing the request\n\n*Cold boot*\n- `cold_boot_count`: Requests with cold boot (startup > 1s)\n- `p50_cold_boot_duration`, `p75_cold_boot_duration`, `p90_cold_boot_duration`: Cold boot duration percentiles\n\n*Billing*\n- `total_billable_duration`: Aggregate billed execution time\n\n**Key Features:**\n- Selective metric inclusion via expand parameter\n- Performance metrics (latency percentiles, duration stats)\n- Reliability metrics (success/error rates, request counts)\n- Error type breakdown (startup, connection, timeout, runtime)\n- Cold boot metrics (count, latency percentiles)\n- Billing duration tracking\n- Time-bucketed data for trend analysis\n- Single or multi-model analytics\n- Flexible date range and timeframe options\n\n**Common Use Cases:**\n- Monitor model performance and reliability\n- Generate performance dashboards\n- Analyze latency trends and patterns\n- Track error rates and success metrics\n\nSee [Queue API docs](https://docs.fal.ai/model-apis/model-endpoints/queue) for more details.\n ","tags":["Models","Analytics"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":true,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["time_series","request_count"],"description":"Data and metrics to include in the response. Use 'time_series' for time-bucketed data, metric names for specific metrics in time series, and 'summary' for aggregate statistics. At least one of 'time_series' or 'summary' and at least one metric are required.","example":["request_count","success_count"]},"required":false,"description":"Data and metrics to include in the response. Use 'time_series' for time-bucketed data, metric names for specific metrics in time series, and 'summary' for aggregate statistics. At least one of 'time_series' or 'summary' and at least one metric are required.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Analytics data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"time_series":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"Time bucket timestamp in user's timezone with offset (ISO8601 datetime)"},"results":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier for these statistics"},"request_count":{"type":"integer","minimum":0,"description":"Total number of requests"},"success_count":{"type":"integer","minimum":0,"description":"Number of successful requests (2xx responses)"},"user_error_count":{"type":"integer","minimum":0,"description":"Number of user errors (4xx responses)"},"error_count":{"type":"integer","minimum":0,"description":"Number of server errors (5xx responses)"},"p50_prepare_duration":{"type":"number","minimum":0,"description":"50th percentile queue/prepare time before execution in seconds"},"p75_prepare_duration":{"type":"number","minimum":0,"description":"75th percentile queue/prepare time before execution in seconds"},"p90_prepare_duration":{"type":"number","minimum":0,"description":"90th percentile queue/prepare time before execution in seconds"},"p95_prepare_duration":{"type":"number","minimum":0,"description":"95th percentile queue/prepare time before execution in seconds"},"p99_prepare_duration":{"type":"number","minimum":0,"description":"99th percentile queue/prepare time before execution in seconds"},"p50_duration":{"type":"number","minimum":0,"description":"50th percentile request execution duration in seconds"},"p75_duration":{"type":"number","minimum":0,"description":"75th percentile request execution duration in seconds"},"p90_duration":{"type":"number","minimum":0,"description":"90th percentile request execution duration in seconds"},"p25_duration":{"type":"number","minimum":0,"description":"25th percentile request execution duration in seconds"},"p95_duration":{"type":"number","minimum":0,"description":"95th percentile request execution duration in seconds"},"p99_duration":{"type":"number","minimum":0,"description":"99th percentile request execution duration in seconds"},"startup_error_count":{"type":"integer","minimum":0,"description":"Number of startup errors (startup timeout, scheduling failure)"},"connection_error_count":{"type":"integer","minimum":0,"description":"Number of connection errors (connection timeout, disconnected, refused)"},"timeout_error_count":{"type":"integer","minimum":0,"description":"Number of request timeout errors"},"runtime_error_count":{"type":"integer","minimum":0,"description":"Number of runtime errors (internal error, server error)"},"cold_boot_count":{"type":"integer","minimum":0,"description":"Number of requests with cold boot (startup time > 1 second)"},"p50_cold_boot_duration":{"type":"number","minimum":0,"description":"50th percentile cold boot duration in seconds (only cold starts)"},"p75_cold_boot_duration":{"type":"number","minimum":0,"description":"75th percentile cold boot duration in seconds (only cold starts)"},"p90_cold_boot_duration":{"type":"number","minimum":0,"description":"90th percentile cold boot duration in seconds (only cold starts)"},"total_billable_duration":{"type":"number","minimum":0,"description":"Total billable execution duration in seconds (sum of all request durations)"}},"required":["endpoint_id"],"description":"Performance and reliability analytics. Only requested metrics (via expand parameter) will be present in the response. 'prepare_duration' reflects queue/prepare time before execution; 'duration' is request execution time."},"description":"Analytics records for this time bucket"}},"required":["bucket","results"],"description":"Time bucket with grouped analytics records"},"description":"Time series analytics data grouped by time bucket (when expand includes 'time_series'). Each bucket contains all analytics records for that time period."},"summary":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier for these statistics"},"request_count":{"type":"integer","minimum":0,"description":"Total number of requests"},"success_count":{"type":"integer","minimum":0,"description":"Number of successful requests (2xx responses)"},"user_error_count":{"type":"integer","minimum":0,"description":"Number of user errors (4xx responses)"},"error_count":{"type":"integer","minimum":0,"description":"Number of server errors (5xx responses)"},"p50_prepare_duration":{"type":"number","minimum":0,"description":"50th percentile queue/prepare time before execution in seconds"},"p75_prepare_duration":{"type":"number","minimum":0,"description":"75th percentile queue/prepare time before execution in seconds"},"p90_prepare_duration":{"type":"number","minimum":0,"description":"90th percentile queue/prepare time before execution in seconds"},"p95_prepare_duration":{"type":"number","minimum":0,"description":"95th percentile queue/prepare time before execution in seconds"},"p99_prepare_duration":{"type":"number","minimum":0,"description":"99th percentile queue/prepare time before execution in seconds"},"p50_duration":{"type":"number","minimum":0,"description":"50th percentile request execution duration in seconds"},"p75_duration":{"type":"number","minimum":0,"description":"75th percentile request execution duration in seconds"},"p90_duration":{"type":"number","minimum":0,"description":"90th percentile request execution duration in seconds"},"p25_duration":{"type":"number","minimum":0,"description":"25th percentile request execution duration in seconds"},"p95_duration":{"type":"number","minimum":0,"description":"95th percentile request execution duration in seconds"},"p99_duration":{"type":"number","minimum":0,"description":"99th percentile request execution duration in seconds"},"startup_error_count":{"type":"integer","minimum":0,"description":"Number of startup errors (startup timeout, scheduling failure)"},"connection_error_count":{"type":"integer","minimum":0,"description":"Number of connection errors (connection timeout, disconnected, refused)"},"timeout_error_count":{"type":"integer","minimum":0,"description":"Number of request timeout errors"},"runtime_error_count":{"type":"integer","minimum":0,"description":"Number of runtime errors (internal error, server error)"},"cold_boot_count":{"type":"integer","minimum":0,"description":"Number of requests with cold boot (startup time > 1 second)"},"p50_cold_boot_duration":{"type":"number","minimum":0,"description":"50th percentile cold boot duration in seconds (only cold starts)"},"p75_cold_boot_duration":{"type":"number","minimum":0,"description":"75th percentile cold boot duration in seconds (only cold starts)"},"p90_cold_boot_duration":{"type":"number","minimum":0,"description":"90th percentile cold boot duration in seconds (only cold starts)"},"total_billable_duration":{"type":"number","minimum":0,"description":"Total billable execution duration in seconds (sum of all request durations)"}},"required":["endpoint_id"],"description":"Aggregate performance statistics for the entire date range"},"description":"Aggregate statistics (when expand includes 'summary')"}},"required":["next_cursor","has_more"],"description":"Response containing performance analytics with pagination support"},"example":{"time_series":[{"bucket":"2025-01-15T12:00:00-05:00","results":[{"endpoint_id":"fal-ai/flux/dev","request_count":1500,"success_count":1450,"p50_duration":2.5,"p90_duration":4.8}]}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/models/billing-events":{"get":{"operationId":"getBillingEvents","summary":"Billing Events","x-mint":{"href":"/platform-apis/v1/models/billing-events","metadata":{"sidebarTitle":"Billing Events"}},"description":"\nReturns paginated individual billing event records with filters\nfor endpoint and date range. Each record includes the request ID, timestamp,\nendpoint, and output units billed.\n\n**Key Features:**\n- Individual billing event records for each API request\n- Flexible date range filtering\n- Optional endpoint filtering\n- Cursor-based pagination for efficient large dataset queries\n- Limited to 10000 records per page for performance\n- Date range capped at 90 days per request\n\n**Common Use Cases:**\n- Audit individual billing events\n- Track request patterns and volumes\n- Debug specific requests by ID\n- Monitor billing unit consumption per request\n\nSee [fal.ai docs](https://docs.fal.ai/model-apis/faq) for more details.\n ","tags":["Models","Usage"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":false,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific request ID(s). Accepts 1-50 request IDs. Supports comma-separated values: ?request_id=req1,req2 or array syntax: ?request_id=req1&request_id=req2","example":["req-abc123"]},"required":false,"description":"Filter by specific request ID(s). Accepts 1-50 request IDs. Supports comma-separated values: ?request_id=req1,req2 or array syntax: ?request_id=req1&request_id=req2","name":"request_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific API key ID(s). Accepts 1-50 key IDs. Supports comma-separated values: ?api_key_id=key1,key2 or array syntax: ?api_key_id=key1&api_key_id=key2","example":["abc123"]},"required":false,"description":"Filter by specific API key ID(s). Accepts 1-50 key IDs. Supports comma-separated values: ?api_key_id=key1,key2 or array syntax: ?api_key_id=key1&api_key_id=key2","name":"api_key_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by team member login username(s) (nickname). Accepts 1-50 usernames. Supports comma-separated values: ?login_username=alice,bob or array syntax: ?login_username=alice&login_username=bob","example":["alice"]},"required":false,"description":"Filter by team member login username(s) (nickname). Accepts 1-50 usernames. Supports comma-separated values: ?login_username=alice,bob or array syntax: ?login_username=alice&login_username=bob","name":"login_username","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Data to include in the response. Use 'auth_method' for a formatted authentication method label, and 'auth_method_structured' for a machine-readable auth method object (detail, api_key_id, login_username).","example":"auth_method"},"required":false,"description":"Data to include in the response. Use 'auth_method' for a formatted authentication method label, and 'auth_method_structured' for a machine-readable auth method object (detail, api_key_id, login_username).","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Billing event data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"billing_events":{"type":"array","items":{"type":"object","properties":{"request_id":{"type":"string","description":"Unique identifier for the request"},"endpoint_id":{"type":"string","description":"Endpoint identifier that was used (e.g., 'fal-ai/flux/dev')"},"timestamp":{"type":"string","description":"Request timestamp in ISO8601 format"},"output_units":{"type":["number","null"],"minimum":0,"description":"Custom billing units for this request"},"unit_price":{"type":["number","null"],"minimum":0,"description":"Unit price for this request"},"percent_discount":{"type":["number","null"],"description":"Discount percentage applied to this request (e.g., 10 = 10% discount)"},"cost_estimate_nano_usd":{"type":"number","minimum":0,"description":"Estimated cost in nano USD (1 USD = 1,000,000,000 nano USD)"},"auth_method":{"type":"string","description":"Authentication method label (e.g., 'Key 1', 'API Key', 'User token'). Only populated when 'auth_method' is included in expand parameter."},"auth_method_structured":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable summary of the authentication method (key alias, login username, or 'User token'/'None')."},"api_key_id":{"type":"string","description":"API key ID, present when the request was made with an API key."},"login_username":{"type":"string","description":"Team member login username (nickname), present when the request was made with a user login token resolvable to a team member."}},"required":["detail"],"description":"Structured authentication method identity. Only populated when 'auth_method_structured' is included in expand parameter."}},"required":["request_id","endpoint_id","timestamp","output_units","unit_price","percent_discount","cost_estimate_nano_usd"],"description":"Individual billing event record with details"},"description":"List of billing event records"}},"required":["next_cursor","has_more","billing_events"],"description":"Response containing billing event data with pagination support"},"example":{"billing_events":[{"request_id":"abc123","endpoint_id":"fal-ai/flux/dev","timestamp":"2025-01-15T10:30:45Z","output_units":1.5,"unit_price":0.001,"percent_discount":null,"cost_estimate_nano_usd":1500000},{"request_id":"def456","endpoint_id":"fal-ai/flux/dev","timestamp":"2025-01-15T10:25:30Z","output_units":2,"unit_price":0.001,"percent_discount":10,"cost_estimate_nano_usd":1800000}],"next_cursor":"MjAyNS0wMS0xNVQxMDoyNTozMFo=","has_more":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}}}}},"/models/requests/{request_id}/payloads":{"delete":{"operationId":"deleteRequestPayloads","summary":"Delete request payloads","x-mint":{"href":"/platform-apis/v1/models/requests/payloads","metadata":{"sidebarTitle":"Delete Request Payloads"}},"description":"Deletes the IO payloads and associated CDN output files for a specific request.\n\n**Important:**\n- Only **output** CDN files are deleted (input files may be used by other requests)\n- This action is irreversible\n- Requires authentication with an admin API key\n\n**What gets deleted:**\n- Request input/output payload data\n- CDN-hosted output files (images, videos, etc.)\n\n**What is NOT deleted:**\n- Input CDN files (may be referenced by other requests)\n\n**Response:**\n- Returns deletion status for each CDN file\n- Each result includes the file link and any error that occurred\n\n**Idempotency:**\n- Optional Idempotency-Key header prevents duplicate deletions on retries\n- Responses cached for 10 minutes per unique key\n\nSee [fal.ai docs](https://docs.fal.ai/model-apis/payloads) for more details about request payloads.","tags":["Models","Requests"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"Unique identifier for the request (UUID format)","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"required":true,"description":"Unique identifier for the request (UUID format)","name":"request_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Request payloads deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"cdn_delete_results":{"type":"array","items":{"type":"object","properties":{"link":{"type":"string","description":"CDN URL of the file that was targeted for deletion","example":"https://v3.fal.media/files/example/output.png"},"exception":{"type":["string","null"],"description":"Error message if deletion failed for this file, null if successful","example":null}},"required":["link","exception"],"description":"Result of deleting a single CDN file"},"description":"Array of deletion results for each CDN file associated with the request output"}},"required":["cdn_delete_results"],"description":"Response containing the results of deleting request payloads and CDN output files"},"example":{"cdn_delete_results":[{"link":"https://v3.fal.media/files/abc123/output.png","exception":null},{"link":"https://v3.fal.media/files/def456/output.mp4","exception":null}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/models/requests/by-endpoint":{"get":{"operationId":"listRequestsByEndpoint","summary":"List requests by endpoint(s)","x-mint":{"href":"/platform-apis/v1/models/requests/by-endpoint","metadata":{"sidebarTitle":"List Requests by Endpoint"}},"description":"Lists requests for one or more endpoints (same `endpoint_id` style as usage/explore:\ncomma-separated or repeated query params, up to 50 IDs).\n\n**Authentication:** Requires API key (user or enterprise).\n\n**Filters:**\n- Time range via start / end. If `start` is omitted, defaults to the last 24 hours — unless `request_id` is provided, in which case the default start bound is widened to 90 days.\n- Status (success, error, user_error)\n- Request ID\n- Pagination via cursor/limit (limit defaults to 50, max 100)\n\n**Sorting:**\n- By end time (default) or duration\n\n**Expansions:**\n- Include payloads by adding expand=payloads","tags":["Models","Requests"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Number of items to return per page (max 100)","example":20},"required":false,"description":"Number of items to return per page (max 100)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor encoding the page number","example":"Mg=="},"required":false,"description":"Pagination cursor encoding the page number","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":true,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","enum":["success","error","user_error"],"description":"Filter by request status","example":"success"},"required":false,"description":"Filter by request status","name":"status","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Filter by specific request ID","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"required":false,"description":"Filter by specific request ID","name":"request_id","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Fields to expand in the response. Use payloads to include input and output payloads.","example":["payloads"]},"required":false,"description":"Fields to expand in the response. Use payloads to include input and output payloads.","name":"expand","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","enum":["ended_at","duration"],"default":"ended_at","description":"Sort results by end time or duration","example":"ended_at"},"required":false,"description":"Sort results by end time or duration","name":"sort_by","in":"query"}],"responses":{"200":{"description":"Requests listed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"items":{"type":"array","items":{"type":"object","properties":{"request_id":{"type":"string","format":"uuid","description":"Unique identifier for the request","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"endpoint_id":{"type":"string","description":"Endpoint that was executed for this request","example":"fal-ai/flux/dev"},"started_at":{"type":"string","format":"date-time","description":"Time when request processing started","example":"2025-01-01T00:00:05Z"},"sent_at":{"type":"string","format":"date-time","description":"Time when request was sent to the backend","example":"2025-01-01T00:00:01Z"},"ended_at":{"type":["string","null"],"format":"date-time","description":"Time when request finished processing","example":"2025-01-01T00:00:08Z"},"status_code":{"type":["integer","null"],"description":"HTTP status code returned by the request","example":200},"duration":{"type":["number","null"],"description":"Total request duration in seconds","example":7.8},"json_input":{"description":"Input payload for the request"},"json_output":{"description":"Output payload for the request"}},"required":["request_id","endpoint_id","started_at","sent_at"],"description":"Request item"},"description":"List of requests matching the filter"}},"required":["next_cursor","has_more","items"],"description":"Paginated list of requests for the specified endpoint"},"example":{"items":[{"request_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","endpoint_id":"fal-ai/flux/dev","started_at":"2025-01-01T00:00:05Z","sent_at":"2025-01-01T00:00:01Z","ended_at":"2025-01-01T00:00:08Z","status_code":200,"duration":7.8,"json_input":{"prompt":"cat astronaut"},"json_output":{"status":"ok"}}],"next_cursor":"Mg==","has_more":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/models/requests/search":{"get":{"operationId":"searchRequests","summary":"Search Requests","x-mint":{"href":"/platform-apis/v1/models/requests/search","mcp":{"enabled":true},"metadata":{"sidebarTitle":"Search Requests"}},"description":"Search, filter, and browse your request history. Supports three modes:\n\n**1. Semantic Search** (`query`, `image_url`, or `video_url` parameter):\nFind visually or conceptually similar results using AI embeddings. Provide a text\nquery for text-to-image search, an image URL for image-to-image similarity search,\nor a video URL for video-to-image similarity search.\n\n**2. Filtered Browse** (no `query`, `image_url`, or `video_url`):\nBrowse request history with hard filters. Returns results ordered by creation date (newest first).\n\n**3. Semantic + Filters** (search params AND filter params):\nCombine semantic search with hard filters. Filters narrow the candidate set before\nranking by similarity.\n\n**Filter Options:**\n- `endpoint_id`: Filter by one or more fal endpoints (comma-separated or repeated, up to 50 IDs)\n- `exclude_api_requests` / `only_api_requests`: Filter by request source\n\n**Examples:**\n- Semantic text search: `?query=sunset+landscape`\n- Image similarity: `?image_url=https://...&min_similarity=0.5`\n- Filtered search: `?query=portrait&endpoint_id=fal-ai/flux/dev`\n- Browse across multiple endpoints: `?endpoint_id=fal-ai/flux/dev,fal-ai/flux/schnell`","tags":["Models","Requests"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"type":"string","description":"Text search query for semantic search. Mutually exclusive with image_url and video_url.","example":"sunset landscape"},"required":false,"description":"Text search query for semantic search. Mutually exclusive with image_url and video_url.","name":"query","in":"query"},{"schema":{"type":"string","description":"Image URL for similarity search. Mutually exclusive with query and video_url.","example":"https://v3.fal.media/files/abc123/output.png"},"required":false,"description":"Image URL for similarity search. Mutually exclusive with query and video_url.","name":"image_url","in":"query"},{"schema":{"type":"string","description":"Video URL for similarity search. Mutually exclusive with query and image_url.","example":"https://v3.fal.media/files/abc123/output.mp4"},"required":false,"description":"Video URL for similarity search. Mutually exclusive with query and image_url.","name":"video_url","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by one or more fal endpoints to scope request history. Accepts comma-separated or repeated values (1-50 IDs).","example":["fal-ai/flux/dev"]},"required":false,"description":"Filter by one or more fal endpoints to scope request history. Accepts comma-separated or repeated values (1-50 IDs).","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Deprecated: use `endpoint_id`. Single-endpoint filter retained for backward compatibility. If both are provided, `endpoint_id` wins.","deprecated":true,"example":"fal-ai/flux/dev"},"required":false,"description":"Deprecated: use `endpoint_id`. Single-endpoint filter retained for backward compatibility. If both are provided, `endpoint_id` wins.","name":"endpoint","in":"query"},{"schema":{"type":"boolean","description":"Exclude requests made via API keys (only show playground/UI requests). Mutually exclusive with only_api_requests.","example":true},"required":false,"description":"Exclude requests made via API keys (only show playground/UI requests). Mutually exclusive with only_api_requests.","name":"exclude_api_requests","in":"query"},{"schema":{"type":"boolean","description":"Only include requests made via API keys. Mutually exclusive with exclude_api_requests.","example":true},"required":false,"description":"Only include requests made via API keys. Mutually exclusive with exclude_api_requests.","name":"only_api_requests","in":"query"},{"schema":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Minimum similarity score (0-1) for semantic search results. Only applies when query or image_url is provided.","example":0.3},"required":false,"description":"Minimum similarity score (0-1) for semantic search results. Only applies when query or image_url is provided.","name":"min_similarity","in":"query"}],"responses":{"200":{"description":"Successfully retrieved request search results","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"results":{"type":"array","items":{"type":"object","properties":{"request_id":{"type":"string","format":"uuid","description":"Unique identifier for the request","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"endpoint_id":{"type":"string","description":"Endpoint that was executed for this request","example":"fal-ai/flux/dev"},"started_at":{"type":"string","format":"date-time","description":"Time when request processing started","example":"2025-01-01T00:00:05Z"},"sent_at":{"type":"string","format":"date-time","description":"Time when request was sent to the backend","example":"2025-01-01T00:00:01Z"},"ended_at":{"type":["string","null"],"format":"date-time","description":"Time when request finished processing","example":"2025-01-01T00:00:08Z"},"status_code":{"type":["integer","null"],"description":"HTTP status code returned by the request","example":200},"duration":{"type":["number","null"],"description":"Total request duration in seconds","example":7.8},"json_input":{"description":"Input payload for the request"},"json_output":{"description":"Output payload for the request"},"similarity":{"type":"number","minimum":0,"maximum":1,"description":"Similarity score (0-1) when semantic search is used","example":0.87}},"required":["request_id","endpoint_id","started_at","sent_at"],"description":"Request search result"},"description":"Array of matching request results, ordered by relevance or recency"}},"required":["next_cursor","has_more","results"],"description":"Request search results with pagination"},"example":{"results":[{"request_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","endpoint_id":"fal-ai/flux/dev","started_at":"2025-01-15T11:59:55Z","sent_at":"2025-01-15T11:59:50Z","ended_at":"2025-01-15T12:00:00Z","status_code":200,"duration":5,"similarity":0.95}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/workflows":{"get":{"operationId":"listWorkflows","summary":"List user workflows","x-mint":{"href":"/platform-apis/v1/workflows","metadata":{"sidebarTitle":"List User Workflows"}},"description":"\nList workflows for the authenticated user with optional search and filtering.\n\n**Features:**\n- Paginated results with cursor-based pagination\n- Search by workflow name or title\n- Filter by model endpoints used in the workflow\n\n**Authentication:** Required. Returns only workflows owned by the authenticated user.\n\n**Common Use Cases:**\n- Display user's workflow library\n- Search for specific workflows\n- Find workflows using particular models\n ","tags":["Workflows"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"type":"string","description":"Search by workflow name or title","example":"image generation"},"required":false,"description":"Search by workflow name or title","name":"search","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by model endpoint IDs used in the workflow. Can be a single value or comma-separated values.","example":["fal-ai/flux/dev"]},"required":false,"description":"Filter by model endpoint IDs used in the workflow. Can be a single value or comma-separated values.","name":"used_endpoint_ids","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Successfully retrieved workflows","content":{"application/json":{"schema":{"type":"object","properties":{"workflows":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Unique workflow name/slug within the user's namespace","example":"my-image-workflow"},"title":{"type":"string","description":"Human-readable workflow title","example":"My Image Generation Workflow"},"user_nickname":{"type":"string","description":"Display name/username of the owner","example":"johndoe"},"created_at":{"type":"string","description":"ISO8601 timestamp of workflow creation","example":"2024-01-15T10:30:00Z"},"thumbnail_url":{"type":"string","description":"URL to the workflow thumbnail image","example":"https://fal.ai/workflows/thumb_abc123.png"},"description":{"type":"string","description":"Brief description of what the workflow does","example":"Generate high-quality images using FLUX model"},"tags":{"type":"array","items":{"type":"string","example":"image-generation"},"description":"Tags associated with the workflow","example":["image-generation","ai","flux"]},"endpoint_ids":{"type":"array","items":{"type":"string","example":"fal-ai/flux/dev"},"description":"List of model endpoint IDs used in this workflow","example":["fal-ai/flux/dev","fal-ai/face-swap"]}},"required":["name","title","user_nickname","created_at","tags","endpoint_ids"],"description":"Workflow information"},"description":"Array of workflow items","example":[{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2024-01-15T10:30:00Z","thumbnail_url":"https://fal.ai/workflows/thumb_abc123.png","description":"Generate high-quality images using FLUX model","tags":["image-generation","ai","flux"],"endpoint_ids":["fal-ai/flux/dev","fal-ai/face-swap"]}]},"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages","example":"eyJvZmZzZXQiOjEwfQ=="},"has_more":{"type":"boolean","description":"Whether more results are available","example":true},"total":{"type":"integer","description":"Total number of workflows matching the query","example":42}},"required":["workflows","next_cursor","has_more"],"description":"Response containing workflow data with pagination support"},"example":{"workflows":[{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2025-01-15T12:00:00Z","thumbnail_url":"https://fal.media/files/example.jpg","description":"A workflow for generating images","tags":["image","generation"],"endpoint_ids":["fal-ai/flux/dev"]}],"next_cursor":null,"has_more":false,"total":1}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"post":{"operationId":"createWorkflow","summary":"Create a workflow","x-mint":{"href":"/platform-apis/v1/workflows/create"},"description":"\nCreate a new workflow owned by the authenticated user.\n\n**Authentication:** Required.\n\n**Common Use Cases:**\n- Save a newly built workflow\n- Programmatically provision workflows\n\n**Note:** Workflow names must be unique within your namespace. Creating a\nworkflow with a name you already use returns a 400 validation error.\n ","tags":["Workflows"],"security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":128,"pattern":"^[a-zA-Z0-9_-]+$","description":"Unique workflow name/slug within the user's namespace","example":"my-image-workflow"},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Human-readable workflow title","example":"My Image Generation Workflow"},"contents":{"type":"object","properties":{"name":{"type":"string","description":"Internal name of the workflow definition","example":"my-image-workflow"},"version":{"type":"string","description":"Workflow definition format version","example":"1.0.0"},"nodes":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}},"description":"Workflow nodes keyed by node id"},"output":{"type":"object","additionalProperties":{"type":"string"},"description":"Output field mappings keyed by output name"},"schema":{"type":"object","properties":{"input":{"type":"object","additionalProperties":{},"description":"Input fields schema"},"output":{"type":"object","additionalProperties":{},"description":"Output fields schema"}},"required":["input","output"],"description":"Input/output schema for the workflow"},"metadata":{"type":"object","additionalProperties":{},"description":"Optional workflow metadata"}},"required":["name","version","nodes","output","schema"],"description":"The workflow definition/configuration object","example":{"name":"my-image-workflow","version":"1.0.0","nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"run","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}}},"output":{"image":"$node_a1b2c3.images.0.url"},"schema":{"input":{"prompt":{"type":"string"}},"output":{"image":{"type":"string"}}}}},"is_public":{"type":"boolean","default":false,"description":"Whether the workflow is publicly visible","example":false}},"required":["name","title","contents"],"description":"Request body for creating a new workflow"},"example":{"name":"my-image-workflow","title":"My Image Generation Workflow","is_public":false,"contents":{"name":"my-image-workflow","version":"1.0.0","nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"run","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}}},"output":{"image":"$node_a1b2c3.images.0.url"},"schema":{"input":{"prompt":{"type":"string"}},"output":{"image":{"type":"string"}}}}}}}},"responses":{"201":{"description":"Successfully created workflow","content":{"application/json":{"schema":{"type":"object","properties":{"workflow":{"type":"object","properties":{"name":{"type":"string","description":"Unique workflow name/slug within the user's namespace","example":"my-image-workflow"},"title":{"type":"string","description":"Human-readable workflow title","example":"My Image Generation Workflow"},"user_nickname":{"type":"string","description":"Display name/username of the owner","example":"johndoe"},"created_at":{"type":"string","description":"ISO8601 timestamp of workflow creation","example":"2024-01-15T10:30:00Z"},"is_public":{"type":"boolean","description":"Whether the workflow is publicly visible","example":true},"contents":{"type":"object","additionalProperties":{},"description":"The workflow definition/configuration object","example":{"nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"model","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}},"output":{"id":"output","type":"output","depends":["node_a1b2c3"],"fields":{"image":"$node_a1b2c3.images.0.url"},"metadata":{"position":{"x":600,"y":100}}}}}}},"required":["name","title","user_nickname","created_at","is_public","contents"],"description":"The workflow details","example":{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2024-01-15T10:30:00Z","is_public":true,"contents":{"nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"model","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}},"output":{"id":"output","type":"output","depends":["node_a1b2c3"],"fields":{"image":"$node_a1b2c3.images.0.url"},"metadata":{"position":{"x":600,"y":100}}}}}}}},"required":["workflow"],"description":"Response containing a single workflow's details"},"example":{"workflow":{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2025-01-15T12:00:00Z","is_public":false,"contents":{"name":"my-image-workflow","version":"1.0.0","nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"run","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}}},"output":{"image":"$node_a1b2c3.images.0.url"},"schema":{"input":{"prompt":{"type":"string"}},"output":{"image":{"type":"string"}}}}}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/workflows/{username}/{workflow_name}":{"get":{"operationId":"getWorkflow","summary":"Get workflow details","x-mint":{"href":"/platform-apis/v1/workflows/get"},"description":"\nGet detailed information about a specific workflow, including its full contents/definition.\n\n**Authentication:** Required.\n\n**Common Use Cases:**\n- Load a workflow for editing\n- View workflow configuration\n- Export workflow definition\n ","tags":["Workflows"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","maxLength":128,"pattern":"^[a-zA-Z0-9_-]+$","description":"The username of the workflow owner","example":"johndoe"},"required":true,"description":"The username of the workflow owner","name":"username","in":"path"},{"schema":{"type":"string","maxLength":128,"pattern":"^[a-zA-Z0-9_-]+$","description":"The workflow name/slug","example":"my-image-workflow"},"required":true,"description":"The workflow name/slug","name":"workflow_name","in":"path"}],"responses":{"200":{"description":"Successfully retrieved workflow details","content":{"application/json":{"schema":{"type":"object","properties":{"workflow":{"type":"object","properties":{"name":{"type":"string","description":"Unique workflow name/slug within the user's namespace","example":"my-image-workflow"},"title":{"type":"string","description":"Human-readable workflow title","example":"My Image Generation Workflow"},"user_nickname":{"type":"string","description":"Display name/username of the owner","example":"johndoe"},"created_at":{"type":"string","description":"ISO8601 timestamp of workflow creation","example":"2024-01-15T10:30:00Z"},"is_public":{"type":"boolean","description":"Whether the workflow is publicly visible","example":true},"contents":{"type":"object","additionalProperties":{},"description":"The workflow definition/configuration object","example":{"nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"model","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}},"output":{"id":"output","type":"output","depends":["node_a1b2c3"],"fields":{"image":"$node_a1b2c3.images.0.url"},"metadata":{"position":{"x":600,"y":100}}}}}}},"required":["name","title","user_nickname","created_at","is_public","contents"],"description":"The workflow details","example":{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2024-01-15T10:30:00Z","is_public":true,"contents":{"nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"model","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}},"output":{"id":"output","type":"output","depends":["node_a1b2c3"],"fields":{"image":"$node_a1b2c3.images.0.url"},"metadata":{"position":{"x":600,"y":100}}}}}}}},"required":["workflow"],"description":"Response containing a single workflow's details"},"example":{"workflow":{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2025-01-15T12:00:00Z","is_public":false,"contents":{"nodes":[],"edges":[]}}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/assets":{"get":{"operationId":"listAssets","summary":"Browse assets","x-mint":{"href":"/platform-apis/v1/assets","metadata":{"sidebarTitle":"Browse Assets"}},"description":"Browse and semantically search fal Assets across all media, uploads, favorites, collections, tags, and character references.","tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"type":"string","description":"Text query for hybrid semantic search","example":"cinematic portrait"},"required":false,"description":"Text query for hybrid semantic search","name":"q","in":"query"},{"schema":{"type":"string","format":"uri","description":"fal-hosted image URL to use for semantic image search","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"required":false,"description":"fal-hosted image URL to use for semantic image search","name":"search_image_url","in":"query"},{"schema":{"type":"string","format":"uri","description":"fal-hosted video URL to use for semantic video search","example":"https://fal.media/files/example.mp4"},"required":false,"description":"fal-hosted video URL to use for semantic video search","name":"search_video_url","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"default":[],"description":"Filter by one or more media types","example":["image","video"]},"required":false,"description":"Filter by one or more media types","name":"media_type","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string","enum":["upload","response","request"],"description":"Indexed asset source"},"default":[],"description":"Filter by one or more indexed sources","example":["upload","response"]},"required":false,"description":"Filter by one or more indexed sources","name":"source","in":"query"},{"schema":{"type":"string","enum":["all-media","uploads","favorites","generated"],"default":"all-media","description":"Asset library section to browse","example":"all-media"},"required":false,"description":"Asset library section to browse","name":"section","in":"query"},{"schema":{"type":"string","description":"Collection scope to browse","example":"d8b6elcregj72v34jr8g"},"required":false,"description":"Collection scope to browse","name":"collection_id","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string"},"default":[],"description":"Character identifiers to use as @mention semantic filters","example":["alice"]},"required":false,"description":"Character identifiers to use as @mention semantic filters","name":"character_identifier","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string"},"default":[],"description":"Tag IDs to filter by","example":["43ce3411-1a25-4d14-875e-3562d341b090"]},"required":false,"description":"Tag IDs to filter by","name":"tag_id","in":"query"},{"schema":{"type":"string","enum":["any","all"],"default":"any","description":"Whether tag filters match any tag or all tags","example":"any"},"required":false,"description":"Whether tag filters match any tag or all tags","name":"tag_mode","in":"query"}],"responses":{"200":{"description":"Successfully browsed assets","content":{"application/json":{"schema":{"type":"object","properties":{"assets":{"type":"array","items":{"type":"object","properties":{"vector_id":{"type":"string","description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"request_id":{"type":["string","null"],"description":"Request ID","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"url":{"type":["string","null"],"description":"Media URL","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"type":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"title":{"type":"string","description":"Display title","example":"Portrait"},"endpoint":{"type":["string","null"],"description":"Model endpoint that produced the asset","example":"fal-ai/flux/dev"},"created_at":{"type":["string","null"],"description":"Asset creation time","example":"2026-05-23T20:00:00.000Z"},"source":{"type":["string","null"],"description":"Asset source","example":"upload"},"prompt":{"type":["string","null"],"description":"Saved prompt or description","example":"cinematic portrait"},"width":{"type":["number","null"],"description":"Width in pixels","example":1024},"height":{"type":["number","null"],"description":"Height in pixels","example":1024},"content_type":{"type":["string","null"],"description":"Media content type","example":"image/png"},"is_favorited":{"type":"boolean","description":"Whether the asset is favorited","example":false},"collection_ids":{"type":"array","items":{"type":"string"},"description":"Collections containing this asset","example":["d8b6elcregj72v34jr8g"]},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Assigned tags"},"similarity":{"type":["number","null"],"description":"Semantic similarity score when applicable","example":0.92}},"required":["vector_id","request_id","url","type","title","endpoint","created_at","source","prompt","width","height","content_type","is_favorited","collection_ids","tags","similarity"],"description":"Asset item"},"description":"Asset results"},"next_cursor":{"type":["string","null"],"description":"Cursor for the next page"},"has_more":{"type":"boolean","description":"Whether more results are available"},"total_count":{"type":["number","null"],"description":"Exact total when available; null when unavailable"}},"required":["assets","next_cursor","has_more","total_count"],"description":"Paginated asset browse response"},"example":{"assets":[{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc","request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","type":"image","title":"Cinematic portrait","endpoint":"fal-ai/flux/dev","created_at":"2026-05-23T20:00:00.000Z","source":"upload","prompt":"cinematic portrait of a character","width":1024,"height":1024,"content_type":"image/png","is_favorited":false,"collection_ids":["d8b6elcregj72v34jr8g"],"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}],"similarity":0.92}],"next_cursor":null,"has_more":false,"total_count":1}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections":{"get":{"operationId":"listAssetCollections","summary":"List asset collections","description":"List asset collections for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections","metadata":{"sidebarTitle":"List Asset Collections"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of collections to return","example":50},"required":false,"description":"Maximum number of collections to return","name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0,"description":"Number of collections to skip","example":0},"required":false,"description":"Number of collections to skip","name":"offset","in":"query"}],"responses":{"200":{"description":"Successfully listed collections","content":{"application/json":{"schema":{"type":"object","properties":{"collections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"]},"description":"Asset collections visible to the authenticated user"}},"required":["collections"]},"example":{"collections":[{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":1}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"post":{"operationId":"createAssetCollection","summary":"Create asset collection","description":"Create asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/create","metadata":{"sidebarTitle":"Create Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Collection display name"},"description":{"type":["string","null"],"description":"Optional collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"format":"uri","description":"Optional fal-hosted cover image URL for the collection"},"parent_collection_id":{"type":["string","null"],"minLength":1,"description":"Optional parent collection ID to nest this collection under (manual collections only). Omit or null to create a top-level collection."},"filters":{"description":"Assets filter DSL"}},"required":["name"]},"example":{"name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","filters":null}}}},"responses":{"201":{"description":"Collection created","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}":{"get":{"operationId":"getAssetCollection","summary":"Get asset collection","description":"Get asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/get","metadata":{"sidebarTitle":"Get Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"}],"responses":{"200":{"description":"Collection details","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"patch":{"operationId":"updateAssetCollection","summary":"Update asset collection","description":"Update asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/update","metadata":{"sidebarTitle":"Update Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Collection display name"},"description":{"type":["string","null"],"description":"Optional collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"format":"uri","description":"Optional fal-hosted cover image URL for the collection"},"filters":{"description":"Assets filter DSL"}}},"example":{"name":"Updated campaign concepts","description":"Updated reusable campaign imagery"}}}},"responses":{"200":{"description":"Collection updated","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"delete":{"operationId":"deleteAssetCollection","summary":"Delete asset collection","description":"Delete asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/delete","metadata":{"sidebarTitle":"Delete Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"204":{"description":"Collection deleted"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}/hierarchy":{"get":{"operationId":"getAssetCollectionHierarchy","summary":"Get asset collection hierarchy","description":"Get the nested subtree rooted at an asset collection, plus its ancestor collections ordered from the top level down to its direct parent.","x-mint":{"href":"/platform-apis/v1/assets/collections/hierarchy","metadata":{"sidebarTitle":"Get Asset Collection Hierarchy"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"}],"responses":{"200":{"description":"Collection hierarchy","content":{"application/json":{"schema":{"type":"object","properties":{"hierarchy":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"children":{"type":"array","items":{},"description":"Child collections (always empty at the maximum nesting depth)"}},"required":["id","name","type","children"]},"description":"Child collections"}},"required":["id","name","type","children"]},"description":"Child collections"}},"required":["id","name","type","children"]},"description":"Child collections"}},"required":["id","name","type","children"]},"description":"Child collections"}},"required":["id","name","type","children"],"description":"Subtree rooted at the requested collection"},"ancestors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"}},"required":["id","name","type"],"description":"Ancestor collection"},"description":"Ancestor collections ordered from the top level down to the direct parent"}},"required":["hierarchy","ancestors"]},"example":{"hierarchy":{"id":"d8b6elcregj72v34jr8g","name":"Campaign concepts","type":"manual","children":[{"id":"d8b6em4regj72v34jr90","name":"Drafts","type":"manual","children":[]}]},"ancestors":[{"id":"d7tatpsregjaga2cf3d0","name":"Brand assets","type":"manual"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}/favorite":{"post":{"operationId":"favoriteAssetCollection","summary":"Favorite asset collection","description":"Favorite an asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/favorite","metadata":{"sidebarTitle":"Favorite Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Collection favorited","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":true,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}/unfavorite":{"post":{"operationId":"unfavoriteAssetCollection","summary":"Unfavorite asset collection","description":"Unfavorite an asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/unfavorite","metadata":{"sidebarTitle":"Unfavorite Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Collection unfavorited","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}/move":{"post":{"operationId":"moveAssetCollection","summary":"Move asset collection","description":"Move a manual asset collection under another collection, or to the top level. Only manual collections can be moved or act as folders; nesting is limited to 5 levels deep and cannot create a cycle.","x-mint":{"href":"/platform-apis/v1/assets/collections/move","metadata":{"sidebarTitle":"Move Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"parent_collection_id":{"type":["string","null"],"minLength":1,"description":"Parent collection ID to move this collection under, or null to move it to the top level. Must be a manual collection; nesting is limited to 5 levels and cannot create a cycle."}},"required":["parent_collection_id"]},"example":{"parent_collection_id":"d7tatpsregjaga2cf3d0"}}}},"responses":{"200":{"description":"Collection moved","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":"d7tatpsregjaga2cf3d0","is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":1}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}/assets":{"get":{"operationId":"listAssetCollectionAssets","summary":"Browse assets in a collection","description":"Browse assets in a collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/assets","metadata":{"sidebarTitle":"Browse Collection Assets"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"type":"string","description":"Text query for hybrid semantic search","example":"cinematic portrait"},"required":false,"description":"Text query for hybrid semantic search","name":"q","in":"query"},{"schema":{"type":"string","format":"uri","description":"fal-hosted image URL to use for semantic image search","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"required":false,"description":"fal-hosted image URL to use for semantic image search","name":"search_image_url","in":"query"},{"schema":{"type":"string","format":"uri","description":"fal-hosted video URL to use for semantic video search","example":"https://fal.media/files/example.mp4"},"required":false,"description":"fal-hosted video URL to use for semantic video search","name":"search_video_url","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"default":[],"description":"Filter by one or more media types","example":["image","video"]},"required":false,"description":"Filter by one or more media types","name":"media_type","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string","enum":["upload","response","request"],"description":"Indexed asset source"},"default":[],"description":"Filter by one or more indexed sources","example":["upload","response"]},"required":false,"description":"Filter by one or more indexed sources","name":"source","in":"query"},{"schema":{"type":"string","enum":["all-media","uploads","favorites","generated"],"default":"all-media","description":"Asset library section to browse","example":"all-media"},"required":false,"description":"Asset library section to browse","name":"section","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string"},"default":[],"description":"Character identifiers to use as @mention semantic filters","example":["alice"]},"required":false,"description":"Character identifiers to use as @mention semantic filters","name":"character_identifier","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string"},"default":[],"description":"Tag IDs to filter by","example":["43ce3411-1a25-4d14-875e-3562d341b090"]},"required":false,"description":"Tag IDs to filter by","name":"tag_id","in":"query"},{"schema":{"type":"string","enum":["any","all"],"default":"any","description":"Whether tag filters match any tag or all tags","example":"any"},"required":false,"description":"Whether tag filters match any tag or all tags","name":"tag_mode","in":"query"}],"responses":{"200":{"description":"Collection assets","content":{"application/json":{"schema":{"type":"object","properties":{"assets":{"type":"array","items":{"type":"object","properties":{"vector_id":{"type":"string","description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"request_id":{"type":["string","null"],"description":"Request ID","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"url":{"type":["string","null"],"description":"Media URL","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"type":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"title":{"type":"string","description":"Display title","example":"Portrait"},"endpoint":{"type":["string","null"],"description":"Model endpoint that produced the asset","example":"fal-ai/flux/dev"},"created_at":{"type":["string","null"],"description":"Asset creation time","example":"2026-05-23T20:00:00.000Z"},"source":{"type":["string","null"],"description":"Asset source","example":"upload"},"prompt":{"type":["string","null"],"description":"Saved prompt or description","example":"cinematic portrait"},"width":{"type":["number","null"],"description":"Width in pixels","example":1024},"height":{"type":["number","null"],"description":"Height in pixels","example":1024},"content_type":{"type":["string","null"],"description":"Media content type","example":"image/png"},"is_favorited":{"type":"boolean","description":"Whether the asset is favorited","example":false},"collection_ids":{"type":"array","items":{"type":"string"},"description":"Collections containing this asset","example":["d8b6elcregj72v34jr8g"]},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Assigned tags"},"similarity":{"type":["number","null"],"description":"Semantic similarity score when applicable","example":0.92}},"required":["vector_id","request_id","url","type","title","endpoint","created_at","source","prompt","width","height","content_type","is_favorited","collection_ids","tags","similarity"],"description":"Asset item"},"description":"Asset results"},"next_cursor":{"type":["string","null"],"description":"Cursor for the next page"},"has_more":{"type":"boolean","description":"Whether more results are available"},"total_count":{"type":["number","null"],"description":"Exact total when available; null when unavailable"}},"required":["assets","next_cursor","has_more","total_count"],"description":"Paginated asset browse response"},"example":{"assets":[{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc","request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","type":"image","title":"Cinematic portrait","endpoint":"fal-ai/flux/dev","created_at":"2026-05-23T20:00:00.000Z","source":"upload","prompt":"cinematic portrait of a character","width":1024,"height":1024,"content_type":"image/png","is_favorited":false,"collection_ids":["d8b6elcregj72v34jr8g"],"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}],"similarity":0.92}],"next_cursor":null,"has_more":false,"total_count":1}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"post":{"operationId":"addAssetToCollection","summary":"Add asset to collection","description":"Add an asset to a manual or character collection. Provide a request ID or vector ID; unresolved references are materialized before local collection state is added. For character collections, the asset is added by applying the character tag.","x-mint":{"href":"/platform-apis/v1/assets/collections/assets/add","metadata":{"sidebarTitle":"Add Asset to Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"request_id":"019e6d0a-e5be-7b82-b329-35ae64296902"}}}},"responses":{"200":{"description":"Asset added","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the operation succeeded","example":true}},"required":["success"]},"example":{"success":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"delete":{"operationId":"removeAssetFromCollection","summary":"Remove asset from collection","description":"Remove an asset from a manual or character collection by request ID or vector ID.","x-mint":{"href":"/platform-apis/v1/assets/collections/assets/remove","metadata":{"sidebarTitle":"Remove Asset from Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"}}}},"responses":{"204":{"description":"Asset removed"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/characters":{"get":{"operationId":"listAssetCharacters","summary":"List asset characters","description":"List asset characters for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/characters","metadata":{"sidebarTitle":"List Asset Characters"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of collections to return","example":50},"required":false,"description":"Maximum number of collections to return","name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0,"description":"Number of collections to skip","example":0},"required":false,"description":"Number of collections to skip","name":"offset","in":"query"}],"responses":{"200":{"description":"Characters","content":{"application/json":{"schema":{"type":"object","properties":{"characters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"},"description":"Asset characters visible to the authenticated user"}},"required":["characters"]},"example":{"characters":[{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":false,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"post":{"operationId":"createAssetCharacter","summary":"Create asset character","description":"Create an asset character for the authenticated user's fal Assets library. Prefer vector IDs or request IDs in reference_images for existing fal-generated assets; use fal-hosted image URLs only for standalone images. Unresolved ID references are materialized before character state is added.","x-mint":{"href":"/platform-apis/v1/assets/characters/create","metadata":{"sidebarTitle":"Create Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Character display name"},"identifier":{"type":["string","null"],"maxLength":64,"description":"Optional @mention identifier for the character"},"description":{"type":"string","minLength":1,"maxLength":2000,"description":"Text description used for character semantic matching"},"reference_images":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":20,"description":"Reference images for the character. Prefer vector IDs or request IDs for existing fal-generated assets. Use fal-hosted image URLs only for standalone images."},"cover_image_url":{"type":["string","null"],"format":"uri","description":"Optional fal-hosted cover image URL for the character"}},"required":["name","description","reference_images"]},"example":{"name":"Alice","identifier":"alice","description":"A character with red hair and a blue jacket","reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","019e6d0a-e5be-7b82-b329-35ae64296902"],"cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"}}}},"responses":{"201":{"description":"Character created","content":{"application/json":{"schema":{"type":"object","properties":{"character":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"}},"required":["character"]},"example":{"character":{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":false,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/characters/{character_id}":{"patch":{"operationId":"updateAssetCharacter","summary":"Update asset character","description":"Update an asset character for the authenticated user's fal Assets library. Prefer vector IDs or request IDs in reference_images for existing fal-generated assets; use fal-hosted image URLs only for standalone images. Unresolved ID references are materialized before character state is added.","x-mint":{"href":"/platform-apis/v1/assets/characters/update","metadata":{"sidebarTitle":"Update Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Character collection ID","example":"d7tatpsregjaga2cf3d0"},"required":true,"description":"Character collection ID","name":"character_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Character display name"},"description":{"type":"string","minLength":1,"maxLength":2000,"description":"Text description used for character semantic matching"},"reference_images":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":20,"description":"Reference images for the character. Prefer vector IDs or request IDs for existing fal-generated assets. Use fal-hosted image URLs only for standalone images."},"cover_image_url":{"type":["string","null"],"format":"uri","description":"Optional fal-hosted cover image URL for the character"}}},"example":{"name":"Alice","reference_images":["019e6d0a-e5be-7b82-b329-35ae64296902"]}}}},"responses":{"200":{"description":"Character updated","content":{"application/json":{"schema":{"type":"object","properties":{"character":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"}},"required":["character"]},"example":{"character":{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":false,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"get":{"operationId":"getAssetCharacter","summary":"Get asset character","description":"Get asset character for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/characters/get","metadata":{"sidebarTitle":"Get Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Character collection ID","example":"d7tatpsregjaga2cf3d0"},"required":true,"description":"Character collection ID","name":"character_id","in":"path"}],"responses":{"200":{"description":"Character details","content":{"application/json":{"schema":{"type":"object","properties":{"character":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"}},"required":["character"]},"example":{"character":{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":false,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"delete":{"operationId":"deleteAssetCharacter","summary":"Delete asset character","description":"Delete asset character for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/characters/delete","metadata":{"sidebarTitle":"Delete Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Character collection ID","example":"d7tatpsregjaga2cf3d0"},"required":true,"description":"Character collection ID","name":"character_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"204":{"description":"Character deleted"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/characters/{character_id}/favorite":{"post":{"operationId":"favoriteAssetCharacter","summary":"Favorite asset character","description":"Favorite an asset character for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/characters/favorite","metadata":{"sidebarTitle":"Favorite Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Character collection ID","example":"d7tatpsregjaga2cf3d0"},"required":true,"description":"Character collection ID","name":"character_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Character favorited","content":{"application/json":{"schema":{"type":"object","properties":{"character":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"}},"required":["character"]},"example":{"character":{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":true,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/characters/{character_id}/unfavorite":{"post":{"operationId":"unfavoriteAssetCharacter","summary":"Unfavorite asset character","description":"Unfavorite an asset character for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/characters/unfavorite","metadata":{"sidebarTitle":"Unfavorite Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Character collection ID","example":"d7tatpsregjaga2cf3d0"},"required":true,"description":"Character collection ID","name":"character_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Character unfavorited","content":{"application/json":{"schema":{"type":"object","properties":{"character":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"}},"required":["character"]},"example":{"character":{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":false,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/tags":{"get":{"operationId":"listAssetTags","summary":"List asset tags","description":"List asset tags for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/tags","metadata":{"sidebarTitle":"List Asset Tags"}},"tags":["Assets"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Tags","content":{"application/json":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Asset tags"}},"required":["tags"]},"example":{"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"post":{"operationId":"createAssetTag","summary":"Create asset tag","description":"Create asset tag for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/tags/create","metadata":{"sidebarTitle":"Create Asset Tag"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50,"description":"Tag name"}},"required":["name"]},"example":{"name":"moodboard"}}}},"responses":{"201":{"description":"Tag created","content":{"application/json":{"schema":{"type":"object","properties":{"tag":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"}},"required":["tag"]},"example":{"tag":{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"put":{"operationId":"setAssetTagsForAsset","summary":"Set tags for an asset","description":"Set tags for an asset. Provide a request ID or vector ID; unresolved references are materialized before tag state is added.","x-mint":{"href":"/platform-apis/v1/assets/tags/set-for-asset","metadata":{"sidebarTitle":"Set Asset Tags"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"},"tag_ids":{"type":"array","items":{"type":"string"},"description":"Full replacement set of tag IDs"}},"required":["tag_ids"]},"example":{"request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","tag_ids":["43ce3411-1a25-4d14-875e-3562d341b090"]}}}},"responses":{"200":{"description":"Asset tags","content":{"application/json":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Asset tags"}},"required":["tags"]},"example":{"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/tags/{tag_id}":{"patch":{"operationId":"updateAssetTag","summary":"Update asset tag","description":"Update asset tag for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/tags/update","metadata":{"sidebarTitle":"Update Asset Tag"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"required":true,"description":"Tag ID","name":"tag_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50,"description":"Tag name"}}},"example":{"name":"campaign"}}}},"responses":{"200":{"description":"Tag updated","content":{"application/json":{"schema":{"type":"object","properties":{"tag":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"}},"required":["tag"]},"example":{"tag":{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"delete":{"operationId":"deleteAssetTag","summary":"Delete asset tag","description":"Delete asset tag for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/tags/delete","metadata":{"sidebarTitle":"Delete Asset Tag"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"required":true,"description":"Tag ID","name":"tag_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"204":{"description":"Tag deleted"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/uploads":{"post":{"operationId":"uploadAsset","summary":"Upload asset","description":"Upload asset for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/uploads","metadata":{"sidebarTitle":"Upload Asset"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"fal-hosted media URL to ingest into the asset library"},"type":{"type":"string","enum":["image","video","audio","3d"],"description":"Media type for the uploaded asset"},"prompt":{"type":["string","null"],"minLength":1,"maxLength":2000,"description":"Optional caller-provided caption or description to index with the uploaded asset"},"collection_id":{"type":["string","null"],"description":"Optional manual collection ID to add the uploaded asset to"},"favorite":{"type":"boolean","default":false,"description":"Whether to favorite the uploaded asset immediately"},"tag_ids":{"type":"array","items":{"type":"string"},"default":[],"description":"Tag IDs to assign to the uploaded asset"}},"required":["url","type"]},"example":{"url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","type":"image","prompt":"Cinematic portrait of a character","collection_id":"d8b6elcregj72v34jr8g","favorite":true,"tag_ids":["43ce3411-1a25-4d14-875e-3562d341b090"]}}}},"responses":{"201":{"description":"Upload ingested","content":{"application/json":{"schema":{"type":"object","properties":{"asset":{"type":"object","properties":{"vector_id":{"type":"string","description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"request_id":{"type":["string","null"],"description":"Request ID","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"url":{"type":["string","null"],"description":"Media URL","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"type":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"title":{"type":"string","description":"Display title","example":"Portrait"},"endpoint":{"type":["string","null"],"description":"Model endpoint that produced the asset","example":"fal-ai/flux/dev"},"created_at":{"type":["string","null"],"description":"Asset creation time","example":"2026-05-23T20:00:00.000Z"},"source":{"type":["string","null"],"description":"Asset source","example":"upload"},"prompt":{"type":["string","null"],"description":"Saved prompt or description","example":"cinematic portrait"},"width":{"type":["number","null"],"description":"Width in pixels","example":1024},"height":{"type":["number","null"],"description":"Height in pixels","example":1024},"content_type":{"type":["string","null"],"description":"Media content type","example":"image/png"},"is_favorited":{"type":"boolean","description":"Whether the asset is favorited","example":false},"collection_ids":{"type":"array","items":{"type":"string"},"description":"Collections containing this asset","example":["d8b6elcregj72v34jr8g"]},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Assigned tags"},"similarity":{"type":["number","null"],"description":"Semantic similarity score when applicable","example":0.92}},"required":["vector_id","request_id","url","type","title","endpoint","created_at","source","prompt","width","height","content_type","is_favorited","collection_ids","tags","similarity"],"description":"Asset details"}},"required":["asset"]},"example":{"asset":{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc","request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","type":"image","title":"Cinematic portrait","endpoint":"fal-ai/flux/dev","created_at":"2026-05-23T20:00:00.000Z","source":"upload","prompt":"cinematic portrait of a character","width":1024,"height":1024,"content_type":"image/png","is_favorited":false,"collection_ids":["d8b6elcregj72v34jr8g"],"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}],"similarity":0.92}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/{vector_id}":{"get":{"operationId":"getAsset","summary":"Get asset","description":"Get an asset document by vector ID from the authenticated user's fal Assets library. The vector may exist only in Turbopuffer; in that case the response returns the Turbopuffer document with empty local state.","x-mint":{"href":"/platform-apis/v1/assets/get","metadata":{"sidebarTitle":"Get Asset"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"required":true,"description":"Vector ID","name":"vector_id","in":"path"}],"responses":{"200":{"description":"Asset details","content":{"application/json":{"schema":{"type":"object","properties":{"asset":{"type":"object","properties":{"vector_id":{"type":"string","description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"request_id":{"type":["string","null"],"description":"Request ID","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"url":{"type":["string","null"],"description":"Media URL","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"type":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"title":{"type":"string","description":"Display title","example":"Portrait"},"endpoint":{"type":["string","null"],"description":"Model endpoint that produced the asset","example":"fal-ai/flux/dev"},"created_at":{"type":["string","null"],"description":"Asset creation time","example":"2026-05-23T20:00:00.000Z"},"source":{"type":["string","null"],"description":"Asset source","example":"upload"},"prompt":{"type":["string","null"],"description":"Saved prompt or description","example":"cinematic portrait"},"width":{"type":["number","null"],"description":"Width in pixels","example":1024},"height":{"type":["number","null"],"description":"Height in pixels","example":1024},"content_type":{"type":["string","null"],"description":"Media content type","example":"image/png"},"is_favorited":{"type":"boolean","description":"Whether the asset is favorited","example":false},"collection_ids":{"type":"array","items":{"type":"string"},"description":"Collections containing this asset","example":["d8b6elcregj72v34jr8g"]},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Assigned tags"},"similarity":{"type":["number","null"],"description":"Semantic similarity score when applicable","example":0.92}},"required":["vector_id","request_id","url","type","title","endpoint","created_at","source","prompt","width","height","content_type","is_favorited","collection_ids","tags","similarity"],"description":"Asset details"}},"required":["asset"]},"example":{"asset":{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc","request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","type":"image","title":"Cinematic portrait","endpoint":"fal-ai/flux/dev","created_at":"2026-05-23T20:00:00.000Z","source":"upload","prompt":"cinematic portrait of a character","width":1024,"height":1024,"content_type":"image/png","is_favorited":false,"collection_ids":["d8b6elcregj72v34jr8g"],"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}],"similarity":0.92}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/favorite":{"post":{"operationId":"favoriteAsset","summary":"Favorite asset","description":"Favorite an asset. Provide a request ID or vector ID; unresolved references are materialized before favorite state is added.","x-mint":{"href":"/platform-apis/v1/assets/favorite","metadata":{"sidebarTitle":"Favorite Asset"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"request_id":"019e6d0a-e5be-7b82-b329-35ae64296902"}}}},"responses":{"200":{"description":"Asset favorited","content":{"application/json":{"schema":{"type":"object","properties":{"is_favorited":{"type":"boolean","description":"Whether the asset is now favorited"}},"required":["is_favorited"]},"example":{"is_favorited":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/unfavorite":{"post":{"operationId":"unfavoriteAsset","summary":"Unfavorite asset","description":"Unfavorite an asset by request ID or vector ID.","x-mint":{"href":"/platform-apis/v1/assets/unfavorite","metadata":{"sidebarTitle":"Unfavorite Asset"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"}}}},"responses":{"200":{"description":"Asset unfavorited","content":{"application/json":{"schema":{"type":"object","properties":{"is_favorited":{"type":"boolean","description":"Whether the asset is now favorited"}},"required":["is_favorited"]},"example":{"is_favorited":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/{vector_id}/tags":{"get":{"operationId":"listAssetTagsForAsset","summary":"List tags for an asset","description":"List tags for an asset by vector ID. Vectors that have not been saved as assets return an empty tag list.","x-mint":{"href":"/platform-apis/v1/assets/tags/list-for-asset","metadata":{"sidebarTitle":"List Asset Tags"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"required":true,"description":"Vector ID","name":"vector_id","in":"path"}],"responses":{"200":{"description":"Asset tags","content":{"application/json":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Asset tags"}},"required":["tags"]},"example":{"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/tags/{tag_id}/assign":{"post":{"operationId":"assignAssetTag","summary":"Assign tag to asset","description":"Assign a tag to an asset. Provide a request ID or vector ID; unresolved references are materialized before tag state is added.","x-mint":{"href":"/platform-apis/v1/assets/tags/assign","metadata":{"sidebarTitle":"Assign Asset Tag"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"required":true,"description":"Tag ID","name":"tag_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"request_id":"019e6d0a-e5be-7b82-b329-35ae64296902"}}}},"responses":{"200":{"description":"Tag assigned","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the operation succeeded","example":true}},"required":["success"]},"example":{"success":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"delete":{"operationId":"unassignAssetTag","summary":"Unassign tag from asset","description":"Unassign a tag from an asset by request ID or vector ID.","x-mint":{"href":"/platform-apis/v1/assets/tags/unassign","metadata":{"sidebarTitle":"Unassign Asset Tag"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"required":true,"description":"Tag ID","name":"tag_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"}}}},"responses":{"204":{"description":"Tag unassigned"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/storage/files/acl":{"get":{"operationId":"getStorageFileAcl","summary":"Get file ACL","x-mint":{"href":"/platform-apis/v1/storage/files/acl/get"},"description":"\nReturns the Access Control List currently applied to a fal CDN file.\n\nThe ACL consists of a default decision (`allow`, `forbid`, or `hide`) plus\noptional per-user rules that override the default. Rule users are returned as\nnicknames where possible.\n\n**Authentication:** Required. The API key must have the `assets:read` permission.\n ","tags":["Storage"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","format":"uri","description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","example":"https://v3.fal.media/files/b/0a1b2c3d/output.png"},"required":true,"description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","name":"url","in":"query"}],"responses":{"200":{"description":"Current ACL of the file","content":{"application/json":{"schema":{"type":"object","properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"description":"User-specific overrides to the default decision. Users are returned as nicknames where possible."}},"required":["default","rules"],"description":"Access Control List currently applied to the file"},"example":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"put":{"operationId":"setStorageFileAcl","summary":"Set file ACL","x-mint":{"href":"/platform-apis/v1/storage/files/acl/set"},"description":"\nReplaces the Access Control List of a fal CDN file.\n\nThe ACL consists of a default decision (`allow`, `forbid`, or `hide`) plus\noptional per-user rules that override the default. Rule users may be specified\nby nickname or user ID. Setting `default` to `allow` with no rules makes the\nfile public; `forbid` or `hide` restricts it to the rules you provide.\n\nRules referencing users that do not exist are dropped. The response reflects\nthe ACL actually applied, so verify it contains the rules you sent.\n\n**Authentication:** Required. The API key must have the `assets:write` permission.\n ","tags":["Storage"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","format":"uri","description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","example":"https://v3.fal.media/files/b/0a1b2c3d/output.png"},"required":true,"description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","name":"url","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"default":[],"description":"User-specific overrides to the default decision"}},"required":["default"],"additionalProperties":false,"description":"Access Control List for a fal CDN file"},"example":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}},"responses":{"200":{"description":"ACL applied to the file","content":{"application/json":{"schema":{"type":"object","properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"description":"User-specific overrides to the default decision. Users are returned as nicknames where possible."}},"required":["default","rules"],"description":"Access Control List currently applied to the file"},"example":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/storage/files/sign":{"post":{"operationId":"signStorageFileUrl","summary":"Sign file URL","x-mint":{"href":"/platform-apis/v1/storage/files/sign"},"description":"\nCreates a signed URL that grants temporary access to a fal CDN file,\nregardless of its ACL. Useful for sharing access-restricted files.\n\nThe signature is valid for `expiration_seconds` (up to 7 days).\n\n**Authentication:** Required. The API key must have the `assets:read` permission.\n ","tags":["Storage"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","format":"uri","description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","example":"https://v3.fal.media/files/b/0a1b2c3d/output.png"},"required":true,"description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","name":"url","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expiration_seconds":{"type":"integer","minimum":1,"maximum":604800,"description":"How long the signed URL stays valid, in seconds (max 7 days)","example":3600}},"required":["expiration_seconds"],"additionalProperties":false,"description":"Signing options for the file URL"},"example":{"expiration_seconds":3600}}}},"responses":{"200":{"description":"Signed URL granting temporary access","content":{"application/json":{"schema":{"type":"object","properties":{"signed_url":{"type":"string","description":"URL with an embedded signature granting temporary access","example":"https://v3.fal.media/files/b/0a1b2c3d/output.png?identity=..."}},"required":["signed_url"],"description":"Signed URL response"},"example":{"signed_url":"https://v3.fal.media/files/b/0a1b2c3d/output.png?identity=..."}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/storage/settings":{"get":{"operationId":"getStorageSettings","summary":"Get storage settings","x-mint":{"href":"/platform-apis/v1/storage/settings/get"},"description":"\nReturns the account-level storage lifecycle settings applied to newly uploaded\nfal CDN files:\n\n- `expiration_duration_seconds`: how long files live before being\n automatically deleted (null disables auto-expiration).\n- `initial_acl`: the default ACL applied to new uploads (null means the\n system default, which is public).\n\nBoth fields are null when the account has never saved settings.\n\n**Authentication:** Required. The API key must have the `account:settings:read` permission.\n ","tags":["Storage"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Current storage settings","content":{"application/json":{"schema":{"type":"object","properties":{"expiration_duration_seconds":{"type":["integer","null"],"description":"Seconds after which newly uploaded files automatically expire, or null if auto-expiration is disabled","example":86400},"initial_acl":{"type":["object","null"],"properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"description":"User-specific overrides to the default decision. Users are returned as nicknames where possible."}},"required":["default","rules"],"description":"Default ACL applied to newly uploaded files, or null if the system default (public) is used"}},"required":["expiration_duration_seconds","initial_acl"],"description":"Account-level storage lifecycle settings"},"example":{"expiration_duration_seconds":86400,"initial_acl":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"put":{"operationId":"updateStorageSettings","summary":"Update storage settings","x-mint":{"href":"/platform-apis/v1/storage/settings/update"},"description":"\nReplaces the account-level storage lifecycle settings applied to newly\nuploaded fal CDN files. Omitted or null fields are cleared (reset to the\nsystem default), so always send the full desired configuration.\n\nACL rules referencing users that do not exist are dropped. The response\nreflects the settings actually saved, so verify it contains the rules you sent.\n\nThese are the same settings that the per-request\n`X-Fal-Object-Lifecycle-Preference` header overrides on individual requests.\n\n**Authentication:** Required. The API key must have the `account:settings:write` permission.\n ","tags":["Storage"],"security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expiration_duration_seconds":{"type":["integer","null"],"minimum":1,"description":"Seconds after which newly uploaded files automatically expire and are deleted. Null disables auto-expiration.","example":86400},"initial_acl":{"type":["object","null"],"properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"default":[],"description":"User-specific overrides to the default decision"}},"required":["default"],"additionalProperties":false,"description":"Default ACL applied to newly uploaded files. Null uses the system default (public)."}},"additionalProperties":false,"description":"Account-level storage lifecycle settings"},"example":{"expiration_duration_seconds":86400,"initial_acl":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}}},"responses":{"200":{"description":"Storage settings after the update","content":{"application/json":{"schema":{"type":"object","properties":{"expiration_duration_seconds":{"type":["integer","null"],"description":"Seconds after which newly uploaded files automatically expire, or null if auto-expiration is disabled","example":86400},"initial_acl":{"type":["object","null"],"properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"description":"User-specific overrides to the default decision. Users are returned as nicknames where possible."}},"required":["default","rules"],"description":"Default ACL applied to newly uploaded files, or null if the system default (public) is used"}},"required":["expiration_duration_seconds","initial_acl"],"description":"Account-level storage lifecycle settings"},"example":{"expiration_duration_seconds":86400,"initial_acl":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/analytics":{"get":{"operationId":"serverlessGetAnalytics","summary":"Analytics","x-mint":{"href":"/platform-apis/v1/serverless/analytics","metadata":{"sidebarTitle":"Analytics"}},"description":"\nTime-bucketed metrics for your serverless app endpoints, including request counts,\nsuccess/error rates, and latency percentiles across all inbound traffic.\n`prepare_duration` reflects queue/prepare time before execution;\n`duration` is request execution time.\n\nThis endpoint shows all inbound requests to endpoints you own — not just\nyour own calls. This is ideal for monitoring your deployed apps, tracking\nSLAs, and exporting data to tools like BigQuery or Grafana. You must own\nall requested endpoints; returns 403 otherwise.\n\n**Metric Selection:**\nYou must specify which metrics to include using the `expand` query\nparameter. Only requested metrics will be populated in the response,\nallowing you to optimize query performance and data transfer.\n\n**Available Metrics:**\n\nThe `expand` parameter accepts these values, grouped by category:\n\n*Volume*\n- `request_count`: Total number of requests in the time bucket\n- `success_count`: Successful requests (2xx responses)\n- `user_error_count`: User errors (4xx responses)\n- `error_count`: Server errors (5xx responses)\n\n*Error type breakdown*\n- `startup_error_count`: Startup errors (startup timeout, scheduling failure)\n- `connection_error_count`: Connection errors (timeout, disconnected, refused)\n- `timeout_error_count`: Request timeout errors\n- `runtime_error_count`: Runtime errors (internal error, server error)\n\n*Queue / prepare latency*\n- `p50_prepare_duration`, `p75_prepare_duration`, `p90_prepare_duration`, `p95_prepare_duration`, `p99_prepare_duration`: Time from request submission until execution starts\n\n*Request execution latency*\n- `p25_duration`, `p50_duration`, `p75_duration`, `p90_duration`, `p95_duration`, `p99_duration`: Time spent processing the request\n\n*Cold boot*\n- `cold_boot_count`: Requests with cold boot (startup > 1s)\n- `p50_cold_boot_duration`, `p75_cold_boot_duration`, `p90_cold_boot_duration`: Cold boot duration percentiles\n\n*Billing*\n- `total_billable_duration`: Aggregate billed execution time\n\n**Key Features:**\n- See all traffic to your apps across all callers\n- Selective metric inclusion via expand parameter\n- Performance metrics (latency percentiles, duration stats)\n- Reliability metrics (success/error rates, request counts)\n- Error type breakdown (startup, connection, timeout, runtime)\n- Cold boot metrics (count, latency percentiles)\n- Billing duration tracking\n- Time-bucketed data for trend analysis\n- Flexible date range and timeframe options\n\n**Common Use Cases:**\n- Monitor your serverless app performance and reliability\n- Export analytics to your own observability tools\n- Analyze latency trends across all callers\n- Track error rates and SLA compliance\n ","tags":["Serverless","Analytics"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":true,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["time_series","request_count"],"description":"Data and metrics to include in the response. Use 'time_series' for time-bucketed data, metric names for specific metrics in time series, and 'summary' for aggregate statistics. At least one of 'time_series' or 'summary' and at least one metric are required.","example":["request_count","success_count"]},"required":false,"description":"Data and metrics to include in the response. Use 'time_series' for time-bucketed data, metric names for specific metrics in time series, and 'summary' for aggregate statistics. At least one of 'time_series' or 'summary' and at least one metric are required.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Analytics data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"time_series":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"Time bucket timestamp in user's timezone with offset (ISO8601 datetime)"},"results":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier for these statistics"},"request_count":{"type":"integer","minimum":0,"description":"Total number of requests"},"success_count":{"type":"integer","minimum":0,"description":"Number of successful requests (2xx responses)"},"user_error_count":{"type":"integer","minimum":0,"description":"Number of user errors (4xx responses)"},"error_count":{"type":"integer","minimum":0,"description":"Number of server errors (5xx responses)"},"p50_prepare_duration":{"type":"number","minimum":0,"description":"50th percentile queue/prepare time before execution in seconds"},"p75_prepare_duration":{"type":"number","minimum":0,"description":"75th percentile queue/prepare time before execution in seconds"},"p90_prepare_duration":{"type":"number","minimum":0,"description":"90th percentile queue/prepare time before execution in seconds"},"p95_prepare_duration":{"type":"number","minimum":0,"description":"95th percentile queue/prepare time before execution in seconds"},"p99_prepare_duration":{"type":"number","minimum":0,"description":"99th percentile queue/prepare time before execution in seconds"},"p50_duration":{"type":"number","minimum":0,"description":"50th percentile request execution duration in seconds"},"p75_duration":{"type":"number","minimum":0,"description":"75th percentile request execution duration in seconds"},"p90_duration":{"type":"number","minimum":0,"description":"90th percentile request execution duration in seconds"},"p25_duration":{"type":"number","minimum":0,"description":"25th percentile request execution duration in seconds"},"p95_duration":{"type":"number","minimum":0,"description":"95th percentile request execution duration in seconds"},"p99_duration":{"type":"number","minimum":0,"description":"99th percentile request execution duration in seconds"},"startup_error_count":{"type":"integer","minimum":0,"description":"Number of startup errors (startup timeout, scheduling failure)"},"connection_error_count":{"type":"integer","minimum":0,"description":"Number of connection errors (connection timeout, disconnected, refused)"},"timeout_error_count":{"type":"integer","minimum":0,"description":"Number of request timeout errors"},"runtime_error_count":{"type":"integer","minimum":0,"description":"Number of runtime errors (internal error, server error)"},"cold_boot_count":{"type":"integer","minimum":0,"description":"Number of requests with cold boot (startup time > 1 second)"},"p50_cold_boot_duration":{"type":"number","minimum":0,"description":"50th percentile cold boot duration in seconds (only cold starts)"},"p75_cold_boot_duration":{"type":"number","minimum":0,"description":"75th percentile cold boot duration in seconds (only cold starts)"},"p90_cold_boot_duration":{"type":"number","minimum":0,"description":"90th percentile cold boot duration in seconds (only cold starts)"},"total_billable_duration":{"type":"number","minimum":0,"description":"Total billable execution duration in seconds (sum of all request durations)"}},"required":["endpoint_id"],"description":"Performance and reliability analytics. Only requested metrics (via expand parameter) will be present in the response. 'prepare_duration' reflects queue/prepare time before execution; 'duration' is request execution time."},"description":"Analytics records for this time bucket"}},"required":["bucket","results"],"description":"Time bucket with grouped analytics records"},"description":"Time series analytics data grouped by time bucket (when expand includes 'time_series'). Each bucket contains all analytics records for that time period."},"summary":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier for these statistics"},"request_count":{"type":"integer","minimum":0,"description":"Total number of requests"},"success_count":{"type":"integer","minimum":0,"description":"Number of successful requests (2xx responses)"},"user_error_count":{"type":"integer","minimum":0,"description":"Number of user errors (4xx responses)"},"error_count":{"type":"integer","minimum":0,"description":"Number of server errors (5xx responses)"},"p50_prepare_duration":{"type":"number","minimum":0,"description":"50th percentile queue/prepare time before execution in seconds"},"p75_prepare_duration":{"type":"number","minimum":0,"description":"75th percentile queue/prepare time before execution in seconds"},"p90_prepare_duration":{"type":"number","minimum":0,"description":"90th percentile queue/prepare time before execution in seconds"},"p95_prepare_duration":{"type":"number","minimum":0,"description":"95th percentile queue/prepare time before execution in seconds"},"p99_prepare_duration":{"type":"number","minimum":0,"description":"99th percentile queue/prepare time before execution in seconds"},"p50_duration":{"type":"number","minimum":0,"description":"50th percentile request execution duration in seconds"},"p75_duration":{"type":"number","minimum":0,"description":"75th percentile request execution duration in seconds"},"p90_duration":{"type":"number","minimum":0,"description":"90th percentile request execution duration in seconds"},"p25_duration":{"type":"number","minimum":0,"description":"25th percentile request execution duration in seconds"},"p95_duration":{"type":"number","minimum":0,"description":"95th percentile request execution duration in seconds"},"p99_duration":{"type":"number","minimum":0,"description":"99th percentile request execution duration in seconds"},"startup_error_count":{"type":"integer","minimum":0,"description":"Number of startup errors (startup timeout, scheduling failure)"},"connection_error_count":{"type":"integer","minimum":0,"description":"Number of connection errors (connection timeout, disconnected, refused)"},"timeout_error_count":{"type":"integer","minimum":0,"description":"Number of request timeout errors"},"runtime_error_count":{"type":"integer","minimum":0,"description":"Number of runtime errors (internal error, server error)"},"cold_boot_count":{"type":"integer","minimum":0,"description":"Number of requests with cold boot (startup time > 1 second)"},"p50_cold_boot_duration":{"type":"number","minimum":0,"description":"50th percentile cold boot duration in seconds (only cold starts)"},"p75_cold_boot_duration":{"type":"number","minimum":0,"description":"75th percentile cold boot duration in seconds (only cold starts)"},"p90_cold_boot_duration":{"type":"number","minimum":0,"description":"90th percentile cold boot duration in seconds (only cold starts)"},"total_billable_duration":{"type":"number","minimum":0,"description":"Total billable execution duration in seconds (sum of all request durations)"}},"required":["endpoint_id"],"description":"Aggregate performance statistics for the entire date range"},"description":"Aggregate statistics (when expand includes 'summary')"}},"required":["next_cursor","has_more"],"description":"Response containing performance analytics with pagination support"},"example":{"time_series":[{"bucket":"2025-01-15T12:00:00-05:00","results":[{"endpoint_id":"your-username/your-app","request_count":1500,"success_count":1450,"p50_duration":2.5,"p90_duration":4.8}]}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/apps":{"get":{"operationId":"serverlessListApps","summary":"List Applications","x-mint":{"href":"/platform-apis/v1/serverless/apps/list","metadata":{"sidebarTitle":"List Applications"}},"description":"Lists the serverless applications owned by the authenticated account, with\nthe configuration needed for follow-up calls.\n\nEach application includes its canonical `endpoint_id` ('/'),\nwhich is the identifier accepted by the analytics, requests, logs, and\nqueue endpoints — use this endpoint to discover identifiers instead of\nasking users to paste them.\n\n**Authentication:** Required via API key. Only applications owned by the\nauthenticated account are returned.","tags":["Serverless","Apps"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Environment to list apps from. Defaults to the main environment.","example":"main"},"required":false,"description":"Environment to list apps from. Defaults to the main environment.","name":"environment","in":"query"},{"schema":{"type":"string","description":"Case-insensitive substring match on the app name","example":"image"},"required":false,"description":"Case-insensitive substring match on the app name","name":"search","in":"query"}],"responses":{"200":{"description":"Successfully retrieved the caller's applications","content":{"application/json":{"schema":{"type":"object","properties":{"apps":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Canonical endpoint identifier ('/') accepted by the analytics, requests, logs, and queue endpoints","example":"user_123/my-app"},"name":{"type":"string","description":"Application name (alias)","example":"my-app"},"owner":{"type":"string","description":"Nickname of the app owner","example":"user_123"},"environment":{"type":"string","description":"Environment the app is deployed in","example":"main"},"machine_type":{"type":"string","description":"Machine type the app runs on","example":"GPU-H100"},"auth_mode":{"type":"string","enum":["private","public","shared"],"description":"Endpoint authentication mode","example":"private"},"keep_alive":{"type":"number","description":"Seconds a runner stays warm after its last request","example":300},"min_concurrency":{"type":"number","description":"Minimum number of runners kept alive","example":0},"max_concurrency":{"type":"number","description":"Maximum number of concurrent runners","example":2},"request_timeout":{"type":"number","description":"Request timeout in seconds","example":600},"startup_timeout":{"type":"number","description":"Runner startup timeout in seconds","example":300},"valid_regions":{"type":"array","items":{"type":"string"},"description":"Regions the app may run in","example":["us"]},"updated_at":{"type":"string","description":"Last update timestamp (UTC ISO8601)","example":"2026-07-01T12:00:00Z"}},"required":["endpoint_id","name","owner","environment","machine_type","auth_mode","keep_alive","min_concurrency","max_concurrency","request_timeout","startup_timeout","valid_regions","updated_at"],"additionalProperties":false,"description":"A serverless application owned by the caller"},"description":"Serverless applications owned by the authenticated account"}},"required":["apps"],"additionalProperties":false,"description":"The caller's serverless applications"},"example":{"apps":[{"endpoint_id":"user_123/my-app","name":"my-app","owner":"user_123","environment":"main","machine_type":"GPU-H100","auth_mode":"private","keep_alive":300,"min_concurrency":0,"max_concurrency":2,"request_timeout":600,"startup_timeout":300,"valid_regions":["us"],"updated_at":"2026-07-01T12:00:00Z"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/apps/{owner}/{name}/queue":{"get":{"operationId":"serverlessGetAppQueueInfo","summary":"Queue Size","x-mint":{"href":"/platform-apis/v1/serverless/apps/queue","metadata":{"sidebarTitle":"Queue Size"}},"description":"Retrieves the current queue size for a specific application.","tags":["Serverless","Apps"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Username of the app owner","example":"user_123"},"required":true,"description":"Username of the app owner","name":"owner","in":"path"},{"schema":{"type":"string","description":"Application name","example":"my-app"},"required":true,"description":"Application name","name":"name","in":"path"}],"responses":{"200":{"description":"Successfully retrieved queue information","content":{"application/json":{"schema":{"type":"object","properties":{"queue_size":{"type":"integer","minimum":0,"description":"Current number of requests in the queue","example":5}},"required":["queue_size"],"additionalProperties":false,"description":"Status of the app queue"},"example":{"queue_size":5}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"delete":{"operationId":"serverlessFlushAppQueue","summary":"Flush Application Queue","x-mint":{"href":"/platform-apis/v1/serverless/apps/flush-queue"},"description":"Flushes all pending requests from an application's queue.\n\n**Authentication:** Required via API key\n\n**Idempotency:**\n- Optional `Idempotency-Key` header prevents duplicate flushes on retries\n- Responses cached for 10 minutes per unique key\n\n**Use Cases:**\n- Clear stuck or outdated requests from the queue\n- Reset queue state during development or testing\n- Cancel all pending requests for an application\n\n**Important:**\n- This operation is irreversible\n- All pending requests in the queue will be cancelled\n- Requests already being processed will not be affected","tags":["Serverless","Apps"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Username of the app owner","example":"user_123"},"required":true,"description":"Username of the app owner","name":"owner","in":"path"},{"schema":{"type":"string","description":"Application name","example":"my-app"},"required":true,"description":"Application name","name":"name","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"204":{"description":"Queue flushed successfully"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/apps/{owner}/{name}/runners/history":{"get":{"operationId":"serverlessGetRunnerHistory","summary":"Runner State History","x-mint":{"href":"/platform-apis/v1/serverless/apps/runner-history","metadata":{"sidebarTitle":"Runner State History"}},"description":"Returns historical runner counts by state (running, idle, pending, draining)\nfor an application, bucketed over time.\n\n**Use cases:**\n- Capacity/utilization analysis: compare idle vs running over days or weeks\n to see how much reserved capacity goes unused (use `aggregation=avg`)\n- Incident forensics: correlate error spikes with runner drops or drain\n events around the incident window (use `aggregation=max`)\n\n**Time range:** up to 90 days of history. Defaults to the last 24 hours when\n`start`/`end` are omitted. Bucket size is auto-detected from the range\nunless `timeframe` is specified.\n\n**Authentication:** Required via API key. Only the app owner can query it.","tags":["Serverless","Apps"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Username of the app owner","example":"user_123"},"required":true,"description":"Username of the app owner","name":"owner","in":"path"},{"schema":{"type":"string","description":"Application name","example":"my-app"},"required":true,"description":"Application name","name":"name","in":"path"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Bucket size for the time series (auto-detected from the date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Bucket size for the time series (auto-detected from the date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["max","avg"],"default":"max","description":"How runner counts are aggregated within each bucket: 'max' shows peak concurrency (capacity analysis), 'avg' shows mean concurrency (utilization analysis).","example":"max"},"required":false,"description":"How runner counts are aggregated within each bucket: 'max' shows peak concurrency (capacity analysis), 'avg' shows mean concurrency (utilization analysis).","name":"aggregation","in":"query"}],"responses":{"200":{"description":"Successfully retrieved runner state history","content":{"application/json":{"schema":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Canonical endpoint identifier ('/')","example":"user_123/my-app"},"timeframe":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Bucket size used for the series (resolved if auto-detected)","example":"day"},"aggregation":{"type":"string","enum":["max","avg"],"description":"Aggregation applied within each bucket","example":"max"},"history":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","description":"Bucket start timestamp (UTC ISO8601)","example":"2026-07-01T12:00:00Z"},"running":{"type":"number","description":"Runners actively processing requests","example":2},"idle":{"type":"number","description":"Warm runners waiting for requests (billed but unused)","example":1},"pending":{"type":"number","description":"Runners waiting to be scheduled or starting up","example":0},"draining":{"type":"number","description":"Runners finishing in-flight work before shutting down","example":0}},"required":["timestamp","running","idle","pending","draining"],"additionalProperties":false,"description":"Runner counts by state for one time bucket"},"description":"Runner state counts per time bucket, oldest first"}},"required":["endpoint_id","timeframe","aggregation","history"],"additionalProperties":false,"description":"Historical runner state counts for an application"},"example":{"endpoint_id":"user_123/my-app","timeframe":"hour","aggregation":"max","history":[{"timestamp":"2026-07-01T12:00:00.000Z","running":2,"idle":1,"pending":0,"draining":0}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/apps/{owner}/{name}/events":{"get":{"operationId":"serverlessListAppEvents","summary":"Application Events","x-mint":{"href":"/platform-apis/v1/serverless/apps/events","metadata":{"sidebarTitle":"Application Events"}},"description":"Returns the operational event history for an application: deployments,\nconfiguration changes, and runner lifecycle transitions (started, failed,\ndraining, etc.), newest first.\n\n**Use cases:**\n- Incident correlation: answer \"what changed around this time?\" — did a\n deploy, config change, or runner failure coincide with an error spike?\n- Deployment audit: see when revisions went out and who triggered them\n\n**Time range:** defaults to the last 24 hours when `start`/`end` are\nomitted. Use `category` filters to narrow to specific event types.\n\n**Authentication:** Required via API key. Only the app owner can query it.","tags":["Serverless","Apps"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Username of the app owner","example":"user_123"},"required":true,"description":"Username of the app owner","name":"owner","in":"path"},{"schema":{"type":"string","description":"Application name","example":"my-app"},"required":true,"description":"Application name","name":"name","in":"path"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"anyOf":[{"type":"string","enum":["runner_started","runner_failed","runner_finished","runner_pending","runner_startup_failure","runner_docker_pull","runner_setup","runner_draining","runner_stopping","deployment_started","deployment_failed","deployment_ended","deployment_rolling_started","deployment_rolling_failed","deployment_rolling_ended","deployment_recreate_applied","config_changed"]},{"type":"array","items":{"type":"string","enum":["runner_started","runner_failed","runner_finished","runner_pending","runner_startup_failure","runner_docker_pull","runner_setup","runner_draining","runner_stopping","deployment_started","deployment_failed","deployment_ended","deployment_rolling_started","deployment_rolling_failed","deployment_rolling_ended","deployment_recreate_applied","config_changed"]}}],"description":"Filter by event category. Repeat the parameter to include multiple categories: ?category=deployment_started&category=config_changed","example":["deployment_started"]},"required":false,"description":"Filter by event category. Repeat the parameter to include multiple categories: ?category=deployment_started&category=config_changed","name":"category","style":"form","explode":true,"in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50,"description":"Maximum number of events to return per page (1-1000)","example":50},"required":false,"description":"Maximum number of events to return per page (1-1000)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response","name":"cursor","in":"query"}],"responses":{"200":{"description":"Successfully retrieved application events","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"endpoint_id":{"type":"string","description":"Canonical endpoint identifier ('/')","example":"user_123/my-app"},"events":{"type":"array","items":{"type":"object","properties":{"event_id":{"type":"string","description":"Unique event identifier","example":"a1b2c3d4-0000-0000-0000-000000000000"},"category":{"type":"string","enum":["runner_started","runner_failed","runner_finished","runner_pending","runner_startup_failure","runner_docker_pull","runner_setup","runner_draining","runner_stopping","deployment_started","deployment_failed","deployment_ended","deployment_rolling_started","deployment_rolling_failed","deployment_rolling_ended","deployment_recreate_applied","config_changed"],"description":"Event category","example":"deployment_started"},"created_at":{"type":"string","description":"Event timestamp (UTC ISO8601)","example":"2026-07-01T12:00:00Z"},"payload":{"type":"object","properties":{"job_id":{"type":"string","description":"Runner identifier (runner_* events)","example":"5f8e9c2a"},"machine_type":{"type":"string","description":"Machine type of the runner (runner_* events)","example":"GPU-H100"},"reason":{"type":"string","description":"Human-readable reason for the transition, when available"},"state":{"type":"string","description":"Runner state at failure time (runner_failed events)","example":"RUNNING"},"new_application_id":{"type":"string","description":"Revision deployed by this event (deployment_* events)"},"old_application_id":{"type":"string","description":"Revision being replaced (deployment_* events)"},"old_config":{"type":"object","additionalProperties":{},"description":"Application config before the change (config_changed events)"},"new_config":{"type":"object","additionalProperties":{},"description":"Application config after the change (config_changed events)"},"old_app_auth_mode":{"type":"string","description":"Endpoint auth mode before the change (config_changed events)"},"new_app_auth_mode":{"type":"string","description":"Endpoint auth mode after the change (config_changed events)"},"actor":{"type":"object","properties":{"nickname":{"type":"string","description":"Nickname of the user who triggered the change","example":"user_123"},"full_name":{"type":"string","description":"Display name of the user who triggered the change","example":"Ada Lovelace"}},"additionalProperties":false,"description":"User who triggered the event, when known"}},"additionalProperties":false,"description":"Event details; populated fields depend on the event category (runner_*, deployment_*, config_changed)"}},"required":["event_id","category","created_at","payload"],"additionalProperties":false,"description":"An operational event on a serverless application"},"description":"Operational events, newest first"}},"required":["next_cursor","has_more","endpoint_id","events"],"additionalProperties":false,"description":"Operational event history for an application"},"example":{"endpoint_id":"user_123/my-app","events":[{"event_id":"a1b2c3d4-0000-0000-0000-000000000000","category":"deployment_started","created_at":"2026-07-01T12:00:00Z","payload":{"new_application_id":"app-rev-2","old_application_id":"app-rev-1","actor":{"nickname":"user_123"}}}],"next_cursor":"Mg==","has_more":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/files/list":{"get":{"operationId":"serverlessListRoot","summary":"List files (root)","x-mint":{"href":"/platform-apis/v1/serverless/files/list","metadata":{"sidebarTitle":"List Files (Root)"}},"description":"Lists files and folders in the root of your project storage.","tags":["Serverless","Files"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successfully listed files","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Full file or folder path","example":"datasets/images/cat.jpg"},"name":{"type":"string","description":"Base name of the file or folder","example":"cat.jpg"},"created_time":{"type":"string","format":"date-time","description":"Creation timestamp (UTC ISO 8601)","example":"2024-11-08T00:00:00.000Z"},"updated_time":{"type":"string","format":"date-time","description":"Last update timestamp (UTC ISO 8601)","example":"2024-11-09T00:00:00.000Z"},"is_file":{"type":"boolean","description":"True if this item is a file, false if it is a folder","example":true},"size":{"type":"number","description":"File size in bytes (0 for folders)","example":1250023},"checksum_sha256":{"type":"string","description":"Optional SHA256 checksum","example":"b1946ac92492d2347c6235b4d2611184d5c3f1f0f44aa7b27d3b1d5b0f5a6a11"},"checksum_md5":{"type":"string","description":"Optional MD5 checksum","example":"9e107d9d372bb6826bd81d3542a419d6"}},"required":["path","name","created_time","updated_time","is_file","size"],"additionalProperties":false,"description":"File or folder specification"},"description":"Array of files and folders for the requested directory"},"example":[{"path":"datasets","name":"datasets","created_time":"2024-11-08T00:00:00.000Z","updated_time":"2024-11-09T00:00:00.000Z","is_file":false,"size":0}]}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/files/list/{dir}":{"get":{"operationId":"serverlessListDirectory","summary":"List files (directory)","x-mint":{"href":"/platform-apis/v1/serverless/files/list/directory"},"description":"Lists files and folders within the specified directory path.","tags":["Serverless","Files"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Directory path to list","example":"datasets/images"},"required":true,"description":"Directory path to list","name":"dir","in":"path"}],"responses":{"200":{"description":"Successfully listed files","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Full file or folder path","example":"datasets/images/cat.jpg"},"name":{"type":"string","description":"Base name of the file or folder","example":"cat.jpg"},"created_time":{"type":"string","format":"date-time","description":"Creation timestamp (UTC ISO 8601)","example":"2024-11-08T00:00:00.000Z"},"updated_time":{"type":"string","format":"date-time","description":"Last update timestamp (UTC ISO 8601)","example":"2024-11-09T00:00:00.000Z"},"is_file":{"type":"boolean","description":"True if this item is a file, false if it is a folder","example":true},"size":{"type":"number","description":"File size in bytes (0 for folders)","example":1250023},"checksum_sha256":{"type":"string","description":"Optional SHA256 checksum","example":"b1946ac92492d2347c6235b4d2611184d5c3f1f0f44aa7b27d3b1d5b0f5a6a11"},"checksum_md5":{"type":"string","description":"Optional MD5 checksum","example":"9e107d9d372bb6826bd81d3542a419d6"}},"required":["path","name","created_time","updated_time","is_file","size"],"additionalProperties":false,"description":"File or folder specification"},"description":"Array of files and folders for the requested directory"},"examples":{"success":{"value":[{"path":"datasets/images/cat.jpg","name":"cat.jpg","created_time":"2024-11-08T00:00:00.000Z","updated_time":"2024-11-09T00:00:00.000Z","is_file":true,"size":1250023,"checksum_sha256":"b1946ac92492d2347c6235b4d2611184d5c3f1f0f44aa7b27d3b1d5b0f5a6a11"}],"summary":"Directory listing"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/files/file/{file}":{"get":{"operationId":"serverlessDownloadFile","summary":"Download file","x-mint":{"href":"/platform-apis/v1/serverless/files/file/download"},"description":"Downloads a file by its path. Proxies the underlying storage response.","tags":["Serverless","Files"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Path of the file to download","example":"datasets/images/cat.jpg"},"required":true,"description":"Path of the file to download","name":"file","in":"path"}],"responses":{"200":{"description":"File stream","content":{"application/octet-stream":{"schema":{}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/files/file/url/{file}":{"post":{"operationId":"serverlessUploadFromUrl","summary":"Upload file from URL","x-mint":{"href":"/platform-apis/v1/serverless/files/file/upload-from-url"},"description":"Creates a new file at the target path by downloading it from the provided URL.","tags":["Serverless","Files"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Target file path (including filename)","example":"datasets/images/cat.jpg"},"required":true,"description":"Target file path (including filename)","name":"file","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Publicly accessible URL for the file"}},"required":["url"],"additionalProperties":false,"description":"Upload a file from a URL into the target path"},"example":{"url":"https://example.com/cat.jpg"}}}},"responses":{"200":{"description":"Upload initiated","content":{"application/json":{"schema":{"type":"boolean","description":"Indicates whether the operation was successful"},"example":true}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/files/file/local/{target_path}":{"post":{"operationId":"serverlessUploadLocalFile","summary":"Upload local file (multipart/form-data)","x-mint":{"href":"/platform-apis/v1/serverless/files/file/upload-local"},"description":"Uploads a local file using multipart/form-data. The file field name must be `file_upload`.","tags":["Serverless","Files"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Target path (including filename)","example":"datasets/images/cat.jpg"},"required":true,"description":"Target path (including filename)","name":"target_path","in":"path"},{"schema":{"type":["boolean","null"],"default":false,"description":"If true and the uploaded file is a ZIP, it will be extracted","example":false},"required":false,"description":"If true and the uploaded file is a ZIP, it will be extracted","name":"unzip","in":"query"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file_upload":{"description":"Binary file content"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Upload completed","content":{"application/json":{"schema":{"type":"boolean","description":"Indicates whether the operation was successful"},"example":true}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/metrics":{"get":{"operationId":"serverlessGetMetrics","summary":"Metrics","x-mint":{"href":"/platform-apis/v1/serverless/metrics","metadata":{"sidebarTitle":"Prometheus Metrics"}},"description":"\nReturns Prometheus-compatible metrics in text format for integration into your\nobservability stack\n\n**Authentication:** Required - Uses API key authentication\n\n**Format:** Returns text/plain in Prometheus exposition format\n\n**Common Use Cases:**\n- Export app stats to your observability provider (grafana, datadog etc)\n- Track runner health and performance\n- Set up alerts and monitoring\n\nSee [Prometheus documentation](https://prometheus.io/docs/instrumenting/exposition_formats/) for format details.\n ","tags":["Serverless","Metrics","Observability"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Prometheus-compatible metrics retrieved successfully","content":{"text/plain":{"schema":{"type":"string","description":"Prometheus-compatible metrics in text format","example":"# HELP fal_app_queue_size Current size of the fal app queue\n# TYPE fal_app_queue_size gauge\nfal_requests_total{application=\"my/app\"} 10"},"example":"# HELP fal_app_runners Number of fal app runners\n# TYPE fal_app_runners gauge\nfal_app_runners{application=\"my/app\",machine_type=\"NVIDIA B200\",state=\"running\"} 21\n# HELP fal_app_queue_size Current size of the fal app queue\n# TYPE fal_app_queue_size gauge\nfal_app_queue_size{application=\"my/app\"} 7\n# HELP fal_app_concurrent_requests Current number of concurrent requests being processed\n# TYPE fal_app_concurrent_requests gauge\nfal_app_concurrent_requests{application=\"my/app\"} 3\n# HELP fal_app_requests_completed Number of requests completed in the last minute\n# TYPE fal_app_requests_completed gauge\nfal_app_requests_completed{application=\"my/app\",method=\"POST\",status=\"200\"} 18\n# HELP fal_app_requests_received Number of requests received in the last minute\n# TYPE fal_app_requests_received gauge\nfal_app_requests_received{application=\"my/app\",method=\"POST\"} 24\n# HELP fal_app_request_latency Number of requests completed, bucketed by latency in seconds\n# TYPE fal_app_request_latency gauge\nfal_app_request_latency{application=\"my/app\",le=\"1.0\"} 5\nfal_app_request_latency{application=\"my/app\",le=\"+Inf\"} 24"}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/logs/history":{"post":{"operationId":"serverlessLogsHistory","summary":"Logs history (paginated)","x-mint":{"href":"/platform-apis/v1/serverless/logs/history","metadata":{"sidebarTitle":"Logs History"}},"description":"Returns paginated historical logs that match the provided filters.","tags":["Serverless","Logs"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":1000,"description":"Number of results per page","example":100},"required":false,"description":"Number of results per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response (timestamp-based). Use as 'until' parameter for next page.","example":"2024-11-09T00:00:00.000Z"},"required":false,"description":"Pagination cursor from previous response (timestamp-based). Use as 'until' parameter for next page.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific app ID(s) in '/' format (e.g. 'fal-ai/my-app'). Accepts 1-50 app IDs. Supports comma-separated values: ?app_id=fal-ai/foo,fal-ai/bar or array syntax: ?app_id=fal-ai/foo&app_id=fal-ai/bar","example":["fal-ai/my-app"]},"required":false,"description":"Filter by specific app ID(s) in '/' format (e.g. 'fal-ai/my-app'). Accepts 1-50 app IDs. Supports comma-separated values: ?app_id=fal-ai/foo,fal-ai/bar or array syntax: ?app_id=fal-ai/foo&app_id=fal-ai/bar","name":"app_id","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Filter by revision","example":"rev_abc123"},"required":false,"description":"Filter by revision","name":"revision","in":"query"},{"schema":{"type":"string","enum":["grpc-run","grpc-register","gateway","cron"],"description":"Filter by run source","example":"grpc-run"},"required":false,"description":"Filter by run source","name":"run_source","in":"query"},{"schema":{"type":["boolean","null"],"default":false,"description":"Include tracebacks","example":false},"required":false,"description":"Include tracebacks","name":"traceback","in":"query"},{"schema":{"type":"string","description":"Free-text search","example":"error"},"required":false,"description":"Free-text search","name":"search","in":"query"},{"schema":{"type":"string","description":"Minimum log level","example":"error"},"required":false,"description":"Minimum log level","name":"level","in":"query"},{"schema":{"type":"string","description":"Filter by job id","example":"job_123"},"required":false,"description":"Filter by job id","name":"job_id","in":"query"},{"schema":{"type":"string","description":"Filter by request id","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"required":false,"description":"Filter by request id","name":"request_id","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Label key to filter"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter value"},"condition_type":{"type":"string","enum":["equals","in","not_equals","not_in"],"description":"Condition type for label filtering"}},"required":["key","value"],"additionalProperties":false,"description":"Filter for log labels"}},"examples":{"single":{"value":[{"key":"fal_job_id","value":"job_123"}],"summary":"Filter by a single label"}}}}},"responses":{"200":{"description":"Logs history retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"items":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","description":"ISO timestamp of the log line"},"level":{"type":"string","description":"Log level"},"message":{"type":"string","description":"Log message"},"app":{"type":"string","description":"App identifier"},"revision":{"type":"string","description":"Revision identifier"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional labels"}},"required":["timestamp","level","message","app","revision"],"additionalProperties":false,"description":"A single log entry"},"description":"Array of log entries matching the query"}},"required":["next_cursor","has_more","items"],"description":"Paginated logs response"},"examples":{"success":{"value":{"items":[{"timestamp":"2024-11-09T10:30:45.123Z","level":"info","message":"Application started","app":"my-app","revision":"rev_abc123","labels":{"fal_job_id":"job_123"}}],"next_cursor":"2024-11-09T10:30:44.000Z","has_more":true},"summary":"Paginated logs response"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/logs/stream":{"post":{"operationId":"serverlessLogsStream","summary":"Logs stream (SSE)","x-mint":{"href":"/platform-apis/v1/serverless/logs/stream","metadata":{"sidebarTitle":"Logs Stream (SSE)"}},"description":"Streams live logs that match the provided filters using Server-Sent Events.","tags":["Serverless","Logs"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific app ID(s) in '/' format (e.g. 'fal-ai/my-app'). Accepts 1-50 app IDs. Supports comma-separated values: ?app_id=fal-ai/foo,fal-ai/bar or array syntax: ?app_id=fal-ai/foo&app_id=fal-ai/bar","example":["fal-ai/my-app"]},"required":false,"description":"Filter by specific app ID(s) in '/' format (e.g. 'fal-ai/my-app'). Accepts 1-50 app IDs. Supports comma-separated values: ?app_id=fal-ai/foo,fal-ai/bar or array syntax: ?app_id=fal-ai/foo&app_id=fal-ai/bar","name":"app_id","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Filter by revision","example":"rev_abc123"},"required":false,"description":"Filter by revision","name":"revision","in":"query"},{"schema":{"type":"string","enum":["grpc-run","grpc-register","gateway","cron"],"description":"Filter by run source","example":"grpc-run"},"required":false,"description":"Filter by run source","name":"run_source","in":"query"},{"schema":{"type":["boolean","null"],"default":false,"description":"Include tracebacks","example":false},"required":false,"description":"Include tracebacks","name":"traceback","in":"query"},{"schema":{"type":"string","description":"Free-text search","example":"error"},"required":false,"description":"Free-text search","name":"search","in":"query"},{"schema":{"type":"string","description":"Minimum log level","example":"error"},"required":false,"description":"Minimum log level","name":"level","in":"query"},{"schema":{"type":"string","description":"Filter by job id","example":"job_123"},"required":false,"description":"Filter by job id","name":"job_id","in":"query"},{"schema":{"type":"string","description":"Filter by request id","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"required":false,"description":"Filter by request id","name":"request_id","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Label key to filter"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter value"},"condition_type":{"type":"string","enum":["equals","in","not_equals","not_in"],"description":"Condition type for label filtering"}},"required":["key","value"],"additionalProperties":false,"description":"Filter for log labels"}},"examples":{"single":{"value":[{"key":"fal_job_id","value":"job_123"}],"summary":"Filter by a single label"}}}}},"responses":{"200":{"description":"SSE stream started","content":{"text/event-stream":{"schema":{}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/requests/by-endpoint":{"get":{"operationId":"serverlessListRequestsByEndpoint","summary":"List requests by endpoint(s)","x-mint":{"href":"/platform-apis/v1/serverless/requests/by-endpoint","metadata":{"sidebarTitle":"List Requests by Endpoint"}},"description":"Lists requests for one or more endpoints owned by the authenticated user.\nUse repeated or comma-separated `endpoint_id` (same as other platform list APIs).\n\n**Authentication:** Requires API key.\n\n**Filters:**\n- Time range via start / end. If `start` is omitted, defaults to the last 24 hours — unless `request_id` is provided, in which case the default start bound is widened to 90 days.\n- Status (success, error, user_error)\n- Request ID\n- Pagination via cursor/limit (limit defaults to 50, max 100)\n\n**Sorting:**\n- By end time (default) or duration\n\n**Expansions:**\n- Include payloads by adding expand=payloads\n- Include per-request `billable_units` by adding expand=billing (endpoint owner only)","tags":["Serverless","Requests"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Number of items to return per page (max 100)","example":20},"required":false,"description":"Number of items to return per page (max 100)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor encoding the page number","example":"Mg=="},"required":false,"description":"Pagination cursor encoding the page number","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":true,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","enum":["success","error","user_error"],"description":"Filter by request status","example":"success"},"required":false,"description":"Filter by request status","name":"status","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Filter by specific request ID","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"required":false,"description":"Filter by specific request ID","name":"request_id","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Fields to expand in the response. Use payloads to include input and output payloads. Use billing to include billable_units per request.","example":["payloads","billing"]},"required":false,"description":"Fields to expand in the response. Use payloads to include input and output payloads. Use billing to include billable_units per request.","name":"expand","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","enum":["ended_at","duration"],"default":"ended_at","description":"Sort results by end time or duration","example":"ended_at"},"required":false,"description":"Sort results by end time or duration","name":"sort_by","in":"query"}],"responses":{"200":{"description":"Requests listed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"items":{"type":"array","items":{"type":"object","properties":{"request_id":{"type":"string","format":"uuid","description":"Unique identifier for the request","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"endpoint_id":{"type":"string","description":"Endpoint that was executed for this request","example":"fal-ai/flux/dev"},"started_at":{"type":"string","format":"date-time","description":"Time when request processing started","example":"2025-01-01T00:00:05Z"},"sent_at":{"type":"string","format":"date-time","description":"Time when request was sent to the backend","example":"2025-01-01T00:00:01Z"},"ended_at":{"type":["string","null"],"format":"date-time","description":"Time when request finished processing","example":"2025-01-01T00:00:08Z"},"status_code":{"type":["integer","null"],"description":"HTTP status code returned by the request","example":200},"duration":{"type":["number","null"],"description":"Total request duration in seconds","example":7.8},"json_input":{"description":"Input payload for the request"},"json_output":{"description":"Output payload for the request"},"runner_id":{"type":["string","null"],"format":"uuid","description":"Unique identifier for the runner execution instance. Null if no runner was assigned (e.g. the request failed before dispatch).","example":"f1e2d3c4-b5a6-7890-dcba-0987654321fe"},"billable_units":{"type":["number","null"],"description":"Billable units for this request (only present when expand=billing). Null if a billing event has not yet been recorded for this request.","example":1.5}},"required":["request_id","endpoint_id","started_at","sent_at","runner_id"],"description":"Serverless request item"},"description":"List of requests matching the filter"}},"required":["next_cursor","has_more","items"],"description":"Paginated list of serverless requests for the specified endpoint"},"example":{"items":[{"request_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","endpoint_id":"fal-ai/flux/dev","runner_id":"f1e2d3c4-b5a6-7890-dcba-0987654321fe","started_at":"2025-01-01T00:00:05Z","sent_at":"2025-01-01T00:00:01Z","ended_at":"2025-01-01T00:00:08Z","status_code":200,"duration":7.8,"json_input":{"prompt":"cat astronaut"},"json_output":{"status":"ok"},"billable_units":1.5}],"next_cursor":"Mg==","has_more":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/usage":{"get":{"operationId":"serverlessGetUsage","summary":"Usage","x-mint":{"href":"/platform-apis/v1/serverless/usage","metadata":{"sidebarTitle":"Usage"}},"description":"\nTime-bucketed, aggregated serverless compute usage for **your own account** —\nthe machine-seconds your deployed serverless apps consumed, priced with your\nmachine prices and net of discounts. This matches the serverless portion of the\ndashboard usage view. Unlike `/v1/models/usage` (which reports model API\nendpoint calls), this reports the `sdk_billing_event` compute spend of the apps\nyou run on fal Serverless. Requires an `ADMIN`-scoped API key (this endpoint\nreturns billing and usage data, which the standard `API` key scope does not\ninclude); results are always scoped to the apps you own.\n\n**Filtering by app:**\n- `app` — exact match on one or more app names (comma-separated or repeated,\n up to 50): `?app=my-app-dev,my-app-prod`. Use the value exactly as it appears\n in the response `app` field.\n- `search` — case-insensitive substring match on the app name, for when you\n know the name but not the exact environment/version suffix: `?search=my-app`\n returns every `my-app*` variant.\n- Provide both to AND them. Omit both to return every app you own — useful for\n discovering the exact app names to filter on.\n\n**Expansions:**\n- `time_series`: usage grouped into time buckets (default)\n- `summary`: a single aggregate row per app × machine type across the window\n\n**Notes:**\n- Each row is machine-seconds (`unit` is always `\"second\"`); surge and\n non-surge usage of the same app/machine come back as separate rows\n (`is_surge`), so sum across them for a per-app total.\n- Time-series `bucket` timestamps are returned in the `timezone` you request\n (ISO 8601 with offset, e.g. `2025-01-15T00:00:00-05:00`), which also controls\n how usage is grouped into buckets.\n\n**Common Use Cases:**\n- Track your serverless apps' compute consumption and cost over time\n- Break down spend per app, environment, and machine type\n- Export usage to your own billing/observability tooling\n ","tags":["Serverless","Usage"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter to one or more serverless apps, matched exactly against the `app` value in the response (deployed name, owner prefix stripped). Accepts a comma-separated list or repeated parameter (1-50). For partial/name-only matching use `search`.","example":["autohdr-raw-to-jpg-dev"]},"required":false,"description":"Filter to one or more serverless apps, matched exactly against the `app` value in the response (deployed name, owner prefix stripped). Accepts a comma-separated list or repeated parameter (1-50). For partial/name-only matching use `search`.","name":"app","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Case-insensitive substring match on the app name — returns every app whose name contains this term (e.g. `search=autohdr` matches all `autohdr-*` apps across environments). Combined with `app` via AND when both are given.","example":"autohdr-raw-to-jpg"},"required":false,"description":"Case-insensitive substring match on the app name — returns every app whose name contains this term (e.g. `search=autohdr` matches all `autohdr-*` apps across environments). Combined with `app` via AND when both are given.","name":"search","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["time_series"],"description":"Data to include in the response. Use 'time_series' for time-bucketed data and 'summary' for aggregate statistics across the entire window. At least one is required.","example":["time_series","summary"]},"required":false,"description":"Data to include in the response. Use 'time_series' for time-bucketed data and 'summary' for aggregate statistics across the entire window. At least one is required.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Usage data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"time_series":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"Time bucket timestamp in user's timezone with offset (ISO8601 datetime)"},"results":{"type":"array","items":{"type":"object","properties":{"app":{"type":["string","null"],"description":"Deployed serverless app name (the billing owner prefix is stripped, e.g. 'autohdr-raw-to-jpg-dev'). May include an environment/version suffix. Null for line items without an app attribution."},"environment":{"type":["string","null"],"description":"Deployment environment of the app (e.g., 'production') when present on the billing line item, null otherwise."},"machine_type":{"type":"string","description":"Machine type the usage ran on (e.g., 'GPU-H100', 'L')"},"unit":{"type":"string","description":"The billing unit — always 'second' (machine-seconds)"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit"},"unit_price":{"type":"number","minimum":0,"description":"Per-second price for this machine type, including any customer-specific machine pricing"},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price, net of discounts)"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"},"is_surge":{"type":"boolean","description":"Whether this usage was billed at surge pricing. Surge and non-surge usage of the same machine type appear as separate rows."}},"required":["app","environment","machine_type","unit","quantity","unit_price","cost","currency","is_surge"],"description":"Serverless compute usage line item with billing details"},"description":"Usage records for this time bucket"}},"required":["bucket","results"],"description":"Time bucket with grouped serverless usage records"},"description":"Time series usage data grouped by time bucket (when expand includes 'time_series')."},"summary":{"type":"array","items":{"type":"object","properties":{"app":{"type":["string","null"],"description":"Deployed serverless app name (the billing owner prefix is stripped, e.g. 'autohdr-raw-to-jpg-dev'). May include an environment/version suffix. Null for line items without an app attribution."},"environment":{"type":["string","null"],"description":"Deployment environment of the app (e.g., 'production') when present on the billing line item, null otherwise."},"machine_type":{"type":"string","description":"Machine type the usage ran on (e.g., 'GPU-H100', 'L')"},"unit":{"type":"string","description":"The billing unit — always 'second' (machine-seconds)"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit"},"unit_price":{"type":"number","minimum":0,"description":"Per-second price for this machine type, including any customer-specific machine pricing"},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price, net of discounts)"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"},"is_surge":{"type":"boolean","description":"Whether this usage was billed at surge pricing. Surge and non-surge usage of the same machine type appear as separate rows."}},"required":["app","environment","machine_type","unit","quantity","unit_price","cost","currency","is_surge"],"description":"Aggregate usage statistics for the entire date range"},"description":"Aggregate statistics (when expand includes 'summary')"}},"required":["next_cursor","has_more"],"description":"Response containing serverless usage data with pagination support"},"example":{"time_series":[{"bucket":"2025-01-15T00:00:00-05:00","results":[{"app":"my-app-prod","environment":null,"machine_type":"GPU-H100","unit":"second","quantity":1200,"unit_price":0.00099,"cost":1.188,"currency":"USD","is_surge":false}]}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/compute/instances":{"get":{"operationId":"listComputeInstances","summary":"List Compute Instances","x-mint":{"href":"/platform-apis/v1/compute/instances/list","metadata":{"sidebarTitle":"List Compute Instances"}},"description":"Returns a list of all compute instances belonging to the authenticated user's workspace.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n\n**Key Features:**\n- View all instances regardless of status\n- Includes instance configuration, region, and current status\n- Paginated results for large instance lists\n\n**Common Use Cases:**\n- Monitor all active compute resources\n- Check instance status and availability\n- Audit compute resource usage\n- Build compute management dashboards\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.","tags":["Compute"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"}],"responses":{"200":{"description":"Successfully retrieved compute instances","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"instances":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the compute instance","example":"inst_abc123xyz"},"instance_type":{"type":"string","enum":["gpu_8x_h100_sxm5","gpu_1x_h100_sxm5"],"description":"Type of compute instance (GPU configuration)","example":"gpu_1x_h100_sxm5"},"region":{"type":"string","enum":["us-west","us-central","us-east","eu-north","eu-west","other"],"description":"Geographical region where the instance is located","example":"us-west"},"sector":{"type":"string","enum":["sector_1","sector_2","sector_3"],"description":"Sector identifier for instance placement within the region (if applicable)","example":"sector_1"},"ip":{"type":"string","description":"IP address of the instance (available when instance is ready)","example":"203.0.113.42"},"status":{"type":"string","enum":["ready","init","pending","provisioning","stopped","unknown"],"description":"Current operational status of the instance","example":"ready"},"creator_user_nickname":{"type":"string","description":"Nickname of the user who created this instance","example":"developer"}},"required":["id","instance_type","region","status"],"description":"Compute instance details including configuration, location, and status"},"description":"Array of compute instances belonging to the authenticated user"}},"required":["next_cursor","has_more","instances"],"description":"Response containing a list of compute instances with pagination support"},"example":{"instances":[{"id":"inst_abc123xyz","instance_type":"gpu_1x_h100_sxm5","region":"us-west","sector":"sector_1","ip":"203.0.113.42","status":"ready","creator_user_nickname":"developer"},{"id":"inst_def456uvw","instance_type":"gpu_8x_h100_sxm5","region":"us-east","status":"provisioning","creator_user_nickname":"developer"}],"next_cursor":null,"has_more":false}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"post":{"operationId":"createComputeInstance","summary":"Create Compute Instance","x-mint":{"href":"/platform-apis/v1/compute/instances/create","metadata":{"sidebarTitle":"Create Compute Instance"}},"description":"Creates a new compute instance with the specified configuration and SSH key.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n- Valid SSH public key required for instance access\n\n**Key Features:**\n- Create high-performance GPU instances\n- Specify sector for InfiniBand configuration (8x H100 only)\n- SSH key-based authentication\n- Automatic instance provisioning and region assignment\n- Idempotent creation with Idempotency-Key header (optional but recommended)\n\n**Common Use Cases:**\n- Spin up compute resources for ML training\n- Create GPU instances for inference workloads\n- Set up development environments with H100 GPUs\n- Deploy distributed training with InfiniBand networking\n\n**Instance Types:**\n- `gpu_8x_h100_sxm5`: 8x NVIDIA H100 GPUs (high-performance, supports sector configuration for InfiniBand)\n- `gpu_1x_h100_sxm5`: 1x NVIDIA H100 GPU (standard)\n\n**Idempotency:**\n- Optional Idempotency-Key header prevents duplicate instance creation on retries\n- Responses cached for 10 minutes per unique key\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.","tags":["Compute"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"instance_type":{"type":"string","enum":["gpu_8x_h100_sxm5","gpu_1x_h100_sxm5"],"description":"Type of compute instance to create","example":"gpu_1x_h100_sxm5"},"ssh_key":{"type":"string","minLength":1,"description":"SSH public key for accessing the instance (e.g., 'ssh-rsa AAAAB3...')","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC... user@host"},"sector":{"type":"string","enum":["sector_1","sector_2","sector_3"],"description":"Sector for InfiniBand configuration (only valid with gpu_8x_h100_sxm5)","example":"sector_1"}},"required":["instance_type","ssh_key"],"description":"Request body for creating a new compute instance with SSH access"},"example":{"instance_type":"gpu_8x_h100_sxm5","ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7Kl4... user@host","sector":"sector_1"}}}},"responses":{"201":{"description":"Compute instance created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the compute instance","example":"inst_abc123xyz"},"instance_type":{"type":"string","enum":["gpu_8x_h100_sxm5","gpu_1x_h100_sxm5"],"description":"Type of compute instance (GPU configuration)","example":"gpu_1x_h100_sxm5"},"region":{"type":"string","enum":["us-west","us-central","us-east","eu-north","eu-west","other"],"description":"Geographical region where the instance is located","example":"us-west"},"sector":{"type":"string","enum":["sector_1","sector_2","sector_3"],"description":"Sector identifier for instance placement within the region (if applicable)","example":"sector_1"},"ip":{"type":"string","description":"IP address of the instance (available when instance is ready)","example":"203.0.113.42"},"status":{"type":"string","enum":["ready","init","pending","provisioning","stopped","unknown"],"description":"Current operational status of the instance","example":"ready"},"creator_user_nickname":{"type":"string","description":"Nickname of the user who created this instance","example":"developer"}},"required":["id","instance_type","region","status"],"description":"Compute instance details including configuration, location, and status"},"example":{"id":"inst_abc123xyz","instance_type":"gpu_8x_h100_sxm5","region":"us-west","sector":"sector_1","status":"provisioning","creator_user_nickname":"developer"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/compute/instances/{id}":{"get":{"operationId":"getComputeInstance","summary":"Get Compute Instance","x-mint":{"href":"/platform-apis/v1/compute/instances/get","metadata":{"sidebarTitle":"Get Compute Instance"}},"description":"Retrieves detailed information about a specific compute instance by its ID.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n- Instance must belong to the authenticated user's workspace\n\n**Key Features:**\n- Get current instance status and configuration\n- Access instance IP address when available\n- View region and sector placement\n- Check creator information\n\n**Common Use Cases:**\n- Monitor specific instance status\n- Retrieve connection details (IP address)\n- Check instance readiness before use\n- Audit instance configuration\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.","tags":["Compute"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique identifier for the compute instance","example":"inst_abc123xyz"},"required":true,"description":"Unique identifier for the compute instance","name":"id","in":"path"}],"responses":{"200":{"description":"Successfully retrieved compute instance details","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the compute instance","example":"inst_abc123xyz"},"instance_type":{"type":"string","enum":["gpu_8x_h100_sxm5","gpu_1x_h100_sxm5"],"description":"Type of compute instance (GPU configuration)","example":"gpu_1x_h100_sxm5"},"region":{"type":"string","enum":["us-west","us-central","us-east","eu-north","eu-west","other"],"description":"Geographical region where the instance is located","example":"us-west"},"sector":{"type":"string","enum":["sector_1","sector_2","sector_3"],"description":"Sector identifier for instance placement within the region (if applicable)","example":"sector_1"},"ip":{"type":"string","description":"IP address of the instance (available when instance is ready)","example":"203.0.113.42"},"status":{"type":"string","enum":["ready","init","pending","provisioning","stopped","unknown"],"description":"Current operational status of the instance","example":"ready"},"creator_user_nickname":{"type":"string","description":"Nickname of the user who created this instance","example":"developer"}},"required":["id","instance_type","region","status"],"description":"Compute instance details including configuration, location, and status"},"example":{"id":"inst_abc123xyz","instance_type":"gpu_1x_h100_sxm5","region":"us-west","sector":"sector_1","ip":"203.0.113.42","status":"ready","creator_user_nickname":"developer"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"delete":{"operationId":"deleteComputeInstance","summary":"Delete Compute Instance","x-mint":{"href":"/platform-apis/v1/compute/instances/delete","metadata":{"sidebarTitle":"Delete Compute Instance"}},"description":"Deletes a specific compute instance by its ID. This action is irreversible.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n- Instance must belong to the authenticated user's workspace\n\n**Key Features:**\n- Permanently remove compute instances\n- Free up compute resources\n- Stop billing for the instance\n- Clean up unused resources\n\n**Important:**\n- This action cannot be undone\n- All data on the instance will be lost\n- Instance will be immediately terminated\n- Billing stops after deletion\n\n**Common Use Cases:**\n- Clean up completed workloads\n- Remove failed or stuck instances\n- Manage compute costs\n- Free up quota for new instances\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.","tags":["Compute"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique identifier for the compute instance","example":"inst_abc123xyz"},"required":true,"description":"Unique identifier for the compute instance","name":"id","in":"path"}],"responses":{"204":{"description":"Compute instance deleted successfully"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/keys":{"get":{"operationId":"listApiKeys","summary":"List API Keys","x-mint":{"href":"/platform-apis/v1/keys/list","metadata":{"sidebarTitle":"List API Keys"}},"description":"Returns a list of all API keys belonging to the authenticated user's workspace.\n\n**Requirements:**\n- Authentication required via admin API key\n\n**Key Features:**\n- View all API keys with their aliases and creation dates\n- Optionally expand to include creator information\n- Paginated results for workspaces with many keys\n\n**Expansion Options:**\n- `expand=creator_info`: Include creator_nickname and creator_email for each key\n\n**Common Use Cases:**\n- Audit existing API keys\n- Find keys by alias\n- Monitor key creation activity\n- Build key management interfaces","tags":["Keys"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Fields to expand in the response. Available: creator_info (includes creator_nickname and creator_email)","example":["creator_info"]},"required":false,"description":"Fields to expand in the response. Available: creator_info (includes creator_nickname and creator_email)","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Successfully retrieved API keys","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"keys":{"type":"array","items":{"type":"object","properties":{"key_id":{"type":"string","description":"Unique identifier for the API key","example":"abc123def456"},"alias":{"type":"string","description":"User-provided friendly name for the key","example":"Production Key"},"scope":{"type":"string","enum":["API"],"description":"Scope of the API key. Only API scope keys can be managed via this API.","example":"API"},"created_at":{"type":"string","description":"ISO8601 timestamp when the key was created","example":"2025-01-15T12:00:00Z"},"creator_nickname":{"type":"string","description":"Nickname of the user who created this key (when expanded)","example":"developer"},"creator_email":{"type":"string","description":"Email of the user who created this key (when expanded)","example":"developer@example.com"}},"required":["key_id","alias","scope","created_at"],"description":"API key information"},"description":"Array of API keys belonging to the authenticated user"}},"required":["next_cursor","has_more","keys"],"description":"Response containing a list of API keys with pagination support"},"example":{"keys":[{"key_id":"abc123def456","alias":"Production Key","scope":"API","created_at":"2025-01-15T12:00:00Z"},{"key_id":"xyz789ghi012","alias":"Development Key","scope":"API","created_at":"2025-01-10T09:30:00Z"}],"next_cursor":null,"has_more":false}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"post":{"operationId":"createApiKey","summary":"Create API Key","x-mint":{"href":"/platform-apis/v1/keys/create","metadata":{"sidebarTitle":"Create API Key"}},"description":"Creates a new API key with the specified alias.\n\n**Requirements:**\n- Authentication required via admin API key\n\n**Important Security Notice:**\nThe `key_secret` is only returned once at creation time. Store it securely immediately\nas it cannot be retrieved again. If lost, you must delete the key and create a new one.\n\n**Key Features:**\n- Create API keys programmatically without UI access\n- Assign meaningful aliases for key identification\n- Keys are immediately active upon creation\n\n**Common Use Cases:**\n- Programmatic key provisioning for CI/CD pipelines\n- Self-serve key generation for team members\n- Automated key rotation workflows\n- Integration with secret management systems","tags":["Keys"],"security":[{"adminApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alias":{"type":"string","minLength":1,"maxLength":255,"description":"Required friendly name for the API key","example":"Production Key"}},"required":["alias"],"description":"Request body for creating a new API key"},"example":{"alias":"Production Key"}}}},"responses":{"201":{"description":"API key created successfully. Store the key_secret securely - it will not be shown again.","content":{"application/json":{"schema":{"type":"object","properties":{"key_id":{"type":"string","description":"Unique identifier for the newly created API key","example":"abc123def456"},"key_secret":{"type":"string","description":"Secret portion of the API key. IMPORTANT: This is only returned once at creation time and cannot be retrieved again.","example":"sk_live_abc123..."},"key":{"type":"string","description":"Full API key in the format 'key_id:key_secret'. Use this value directly for API authorization. IMPORTANT: This is only returned once at creation time and cannot be retrieved again.","example":"abc123def456:sk_live_abc123..."}},"required":["key_id","key_secret","key"],"description":"Response containing the newly created API key credentials. The key_secret is only returned once."},"example":{"key_id":"abc123def456","key_secret":"sk_live_abc123def456xyz789","key":"abc123def456:sk_live_abc123def456xyz789"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/keys/{key_id}":{"delete":{"operationId":"deleteApiKey","summary":"Delete API Key","x-mint":{"href":"/platform-apis/v1/keys/delete","metadata":{"sidebarTitle":"Delete API Key"}},"description":"Deletes an API key by its ID. This action is irreversible.\n\n**Requirements:**\n- Authentication required via admin API key\n- Key must belong to the authenticated user's workspace\n\n**Key Features:**\n- Permanently revoke API key access\n- Idempotent operation (safe to retry)\n- Optional Idempotency-Key header for safe retries\n\n**Important:**\n- This action cannot be undone\n- Any applications using this key will immediately lose access\n- Returns 204 even if the key doesn't exist (idempotent behavior)\n\n**Common Use Cases:**\n- Revoke compromised keys\n- Clean up unused keys\n- Implement key rotation (delete old, create new)\n- Offboard team members","tags":["Keys"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique identifier of the API key to delete","example":"abc123def456"},"required":true,"description":"Unique identifier of the API key to delete","name":"key_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"204":{"description":"API key deleted successfully (or already deleted)"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/account/billing":{"get":{"operationId":"getAccountBilling","summary":"Account Billing","x-mint":{"href":"/platform-apis/v1/account/billing","metadata":{"sidebarTitle":"Account Billing"}},"description":"Returns billing information for the authenticated account. Use the `expand`\nparameter to include additional details.\n\n**Expandable Fields:**\n- `credits` — Current credit balance and currency\n\n**Common Use Cases:**\n- Monitor available credit balance programmatically\n- Display balance in custom dashboards","tags":["Account"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Data to include in the response. Use 'credits' to include current credit balance.","example":"credits"},"required":false,"description":"Data to include in the response. Use 'credits' to include current credit balance.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Account billing information retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","description":"Account username","example":"my-team"},"credits":{"type":"object","properties":{"current_balance":{"type":"number","minimum":0,"description":"Current credit balance available on the account","example":24.5},"currency":{"type":"string","description":"Currency code for the balance","example":"USD"}},"required":["current_balance","currency"],"description":"Credit balance details. Only present when 'credits' is included in expand parameter."}},"required":["username"],"description":"Account billing information with optional expanded details"},"example":{"username":"my-team","credits":{"current_balance":24.5,"currency":"USD"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/account/focus":{"get":{"operationId":"getFocusReport","summary":"FOCUS Report","x-mint":{"href":"/platform-apis/v1/account/focus","metadata":{"sidebarTitle":"FOCUS Report"}},"description":"\nReturns a FOCUS compliant billing report as a CSV download.\n\n> **Availability:** This endpoint is available to enterprise customers with FOCUS reports enabled. Contact your account team or support@fal.ai to request access.\n\nSupports two data sources:\n- **invoice**: Finalized invoice data for a billing month. Includes usage charges, credits, and taxes.\n- **estimate**: Real-time usage estimates for a date range. Pre-invoice data that may change once invoiced.\n\nThe report follows the [FinOps FOCUS specification](https://focus.finops.org/) for cloud billing data interoperability.\n\n**Invoice reports** default to the most recently available billing month.\n**Usage estimates** default to the last 24 hours, with a maximum 90-day lookback.\n ","tags":["Account"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["invoice","estimate"],"description":"Report source. 'invoice' returns finalized invoice data for a billing month. 'estimate' returns real-time usage estimates for a date range.","example":"invoice"},"required":true,"description":"Report source. 'invoice' returns finalized invoice data for a billing month. 'estimate' returns real-time usage estimates for a date range.","name":"source","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$","description":"Invoice billing month (YYYY-MM). The month the invoice was issued (e.g. '2025-02' for January charges). Used with source=invoice. Defaults to most recent available billing month.","example":"2025-02"},"required":false,"description":"Invoice billing month (YYYY-MM). The month the invoice was issued (e.g. '2025-02' for January charges). Used with source=invoice. Defaults to most recent available billing month.","name":"billing_month","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$","description":"Charge month (YYYY-MM). The month charges were incurred. Converted to billing_month by adding 1 month (billing in arrears). Alternative to billing_month. Used with source=invoice.","example":"2025-01"},"required":false,"description":"Charge month (YYYY-MM). The month charges were incurred. Converted to billing_month by adding 1 month (billing in arrears). Alternative to billing_month. Used with source=invoice.","name":"charge_month","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"}],"responses":{"200":{"description":"FOCUS compliant CSV report","content":{"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/account/model-access-controls":{"get":{"operationId":"getModelAccessControls","summary":"Model Access Controls Report","x-mint":{"href":"/platform-apis/v1/account/model-access-controls","metadata":{"sidebarTitle":"Model Access Controls"}},"description":"\nReturns the current model access controls for your organization as a CSV download.\n\n> **Availability:** This endpoint is available to enterprise customers with model access controls enabled. Contact your account team or support@fal.ai to request access.\n\nThe report includes each model's endpoint ID, title, category, enterprise readiness status, and the resolved UI and API access state (ALLOWED or BLOCKED).\n ","tags":["Account"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Model access controls CSV report","content":{"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/organization/teams":{"get":{"operationId":"getOrganizationTeams","summary":"Organization Teams","x-mint":{"href":"/platform-apis/v1/organization/teams","metadata":{"sidebarTitle":"Organization Teams"}},"description":"\nReturns the list of teams in your organization with their details.\n\n> **Availability:** This endpoint is available to enterprise customers with organizations enabled. Contact your account team or support@fal.ai to request access.\n\nMust be called with an admin API key on the organization's root team.\n\n**Key Features:**\n- List all teams within the organization\n- Identify the organization's root team via `is_org_root`\n- View team usernames and display names\n\nSee [fal.ai docs](https://docs.fal.ai) for more details.\n ","tags":["Organization"],"security":[{"adminApiKey":[]}],"responses":{"200":{"description":"Organization teams retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"teams":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","description":"Team username/identifier (unique within the organization)","example":"acme-corp"},"name":{"type":"string","description":"Human-readable display name of the team","example":"Acme Corporation"},"is_org_root":{"type":"boolean","description":"True if this is the root organization team; false for sub-teams","example":true},"created_at":{"type":"string","description":"Team creation timestamp in ISO8601 format","example":"2024-01-15T10:30:00Z"}},"required":["username","name","is_org_root","created_at"],"description":"Organization team details"},"description":"List of teams in the organization"}},"required":["teams"],"description":"Response containing organization team details"},"example":{"teams":[{"username":"acme-corp","name":"Acme Corporation","is_org_root":true,"created_at":"2024-01-15T10:30:00Z"},{"username":"acme-ml-team","name":"ML Research Team","is_org_root":false,"created_at":"2024-03-01T14:00:00Z"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/organization/usage":{"get":{"operationId":"getOrganizationUsage","summary":"Organization Usage","x-mint":{"href":"/platform-apis/v1/organization/usage","metadata":{"sidebarTitle":"Organization Usage"}},"description":"\nReturns paginated usage records across all teams and product lines in your\norganization, with each record attributed to a specific team via the\n`username` field and a product line via the `product` field.\n\nCovers all three fal product lines:\n- `model_apis` — model API endpoint calls (e.g. `fal-ai/flux/dev`)\n- `serverless` — fal Serverless SDK billing\n- `compute` — fal Compute (raw instance time)\n\n> **Availability:** This endpoint is available to enterprise customers with organizations enabled. Contact your account team or support@fal.ai to request access.\n\nMust be called with an admin API key on the organization's root team.\n\n**Key Features:**\n- Organization-wide usage data across all teams and products\n- Filter by team (`team_username`), product line (`product`), endpoint, date range, and auth method\n- Per-team and per-product attribution on every usage record\n- Paginated time series and aggregate summary views\n\nSee [fal.ai docs](https://docs.fal.ai) for more details.\n ","tags":["Organization"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":false,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Filter by a specific team username within the organization. If not provided, returns usage across all teams.","example":"acme-ml-team"},"required":false,"description":"Filter by a specific team username within the organization. If not provided, returns usage across all teams.","name":"team_username","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Restrict results to one or more product lines. Accepts a comma-separated list or repeated parameter. Defaults to all three (model_apis, serverless, compute).","example":["model_apis","compute"]},"required":false,"description":"Restrict results to one or more product lines. Accepts a comma-separated list or repeated parameter. Defaults to all three (model_apis, serverless, compute).","name":"product","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["time_series"],"description":"Data to include in the response. Use 'time_series' for time-bucketed data, 'summary' for aggregate statistics, and 'auth_method' to include authentication method information. At least one of 'time_series' or 'summary' is required.","example":["time_series","auth_method"]},"required":false,"description":"Data to include in the response. Use 'time_series' for time-bucketed data, 'summary' for aggregate statistics, and 'auth_method' to include authentication method information. At least one of 'time_series' or 'summary' is required.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Organization usage data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"time_series":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"Time bucket timestamp in user's timezone with offset (ISO8601 datetime)","example":"2025-01-15T00:00:00-05:00"},"results":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","description":"Team username within the organization — identifies which team incurred this line item.","example":"acme-ml-team"},"product":{"type":"string","enum":["model_apis","serverless","compute"],"description":"Product line the usage belongs to: 'model_apis' (fal Model APIs — endpoint calls), 'serverless' (fal Serverless SDK billing), or 'compute' (fal Compute — raw instances).","example":"model_apis"},"endpoint_id":{"type":"string","description":"Identifier of the billed resource. For 'model_apis' this is the endpoint slug (e.g., 'fal-ai/flux/dev'); for 'serverless' it is the SDK billing line; for 'compute' it is the machine type line (e.g., 'type: gpu_1x_h100_sxm5 (my-app, prod)').","example":"fal-ai/flux/dev"},"unit":{"type":"string","description":"The billing unit (e.g., 'image', 'video', or a GPU/compute unit for some models)","example":"image"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit","example":4},"unit_price":{"type":"number","minimum":0,"description":"Unit price used to compute charges for this line item","example":0.1},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price)","example":0.4},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')","example":"USD"},"auth_method":{"type":"string","description":"Authentication method label resolved across the organization (e.g., 'my-key (owner: alice)', 'alice ', or 'None'). Only populated when 'auth_method' is included in the expand parameter. Falls back to the raw upstream label if the decoration service cannot resolve a row.","example":"production-key (owner: acme-ml-team)"}},"required":["username","product","endpoint_id","unit","quantity","unit_price","cost","currency"],"description":"Organization usage line item with team attribution"},"description":"Usage records for this time bucket"}},"required":["bucket","results"],"description":"Time bucket with grouped usage records"},"description":"Time series usage data grouped by time bucket (when expand includes 'time_series'). Each bucket contains all usage records for that time period."},"summary":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","description":"Team username within the organization — identifies which team incurred this line item.","example":"acme-ml-team"},"product":{"type":"string","enum":["model_apis","serverless","compute"],"description":"Product line the usage belongs to: 'model_apis' (fal Model APIs — endpoint calls), 'serverless' (fal Serverless SDK billing), or 'compute' (fal Compute — raw instances).","example":"model_apis"},"endpoint_id":{"type":"string","description":"Identifier of the billed resource. For 'model_apis' this is the endpoint slug (e.g., 'fal-ai/flux/dev'); for 'serverless' it is the SDK billing line; for 'compute' it is the machine type line (e.g., 'type: gpu_1x_h100_sxm5 (my-app, prod)').","example":"fal-ai/flux/dev"},"unit":{"type":"string","description":"The billing unit (e.g., 'image', 'video', or a GPU/compute unit for some models)","example":"image"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit","example":4},"unit_price":{"type":"number","minimum":0,"description":"Unit price used to compute charges for this line item","example":0.1},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price)","example":0.4},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')","example":"USD"},"auth_method":{"type":"string","description":"Authentication method label resolved across the organization (e.g., 'my-key (owner: alice)', 'alice ', or 'None'). Only populated when 'auth_method' is included in the expand parameter. Falls back to the raw upstream label if the decoration service cannot resolve a row.","example":"production-key (owner: acme-ml-team)"}},"required":["username","product","endpoint_id","unit","quantity","unit_price","cost","currency"],"description":"Aggregate organization usage statistics for the entire date range"},"description":"Aggregate statistics (when expand includes 'summary')"}},"required":["next_cursor","has_more"],"description":"Response containing organization usage data with pagination support"},"example":{"time_series":[{"bucket":"2025-01-15T00:00:00-05:00","results":[{"username":"acme-ml-team","product":"model_apis","endpoint_id":"fal-ai/flux/dev","unit":"image","quantity":4,"unit_price":0.1,"cost":0.4,"currency":"USD"},{"username":"acme-ml-team","product":"compute","endpoint_id":"type: gpu_1x_h100_sxm5 (my-app, production)","unit":"second","quantity":3600,"unit_price":0.001,"cost":3.6,"currency":"USD"}]}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/meta":{"get":{"operationId":"getMeta","summary":"Get platform metadata","x-mint":{"href":"/platform-apis/v1/meta","metadata":{"sidebarTitle":"Get Platform Metadata"}},"description":"\nReturns platform metadata including webhook IP ranges for allowlisting.\n\nIf your infrastructure requires allowlisting IP addresses for incoming webhook\nrequests, this endpoint provides the current list of IP ranges used by fal.ai\nwebhooks in CIDR notation.\n ","tags":["Meta"],"responses":{"200":{"description":"Platform metadata","content":{"application/json":{"schema":{"type":"object","properties":{"webhook_ip_ranges":{"type":"array","items":{"type":"string"},"description":"IP address ranges (CIDR notation) used by fal.ai webhooks"}},"required":["webhook_ip_ranges"],"description":"Platform metadata including webhook IP ranges for allowlisting","example":{"webhook_ip_ranges":["34.123.59.101/32","34.135.41.243/32","35.239.83.87/32","104.198.204.37/32","34.56.20.205/32","34.170.94.127/32","35.224.184.236/32","136.114.56.197/32","34.29.37.237/32","35.225.160.28/32","34.56.205.145/32","34.59.170.72/32","34.10.147.45/32","104.198.64.245/32","34.9.1.255/32"]}},"example":{"webhook_ip_ranges":["34.123.59.101/32","34.135.41.243/32","35.239.83.87/32","104.198.204.37/32","34.56.20.205/32","34.170.94.127/32","35.224.184.236/32","136.114.56.197/32","34.29.37.237/32","35.225.160.28/32","34.56.205.145/32","34.59.170.72/32","34.10.147.45/32","104.198.64.245/32","34.9.1.255/32"]}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}}},"webhooks":{}} +{"openapi":"3.1.0","info":{"title":"Platform APIs","version":"v1","description":"fal REST API for programmatic access to platform resources."},"servers":[{"url":"https://api.fal.ai/v1","description":"Production server"}],"components":{"securitySchemes":{"adminApiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"Admin API key must be prefixed with \"Key \", e.g. Authorization: Key YOUR_ADMIN_API_KEY"},"apiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"API key must be prefixed with \"Key \", e.g. Authorization: Key YOUR_API_KEY"}},"schemas":{},"parameters":{}},"paths":{"/models":{"get":{"operationId":"getModels","summary":"Model search","x-mint":{"href":"/platform-apis/v1/models","mcp":{"enabled":true},"metadata":{"sidebarTitle":"Model Search"}},"description":"\nUnified endpoint for discovering model endpoints. Supports three usage modes:\n\n**1. List Mode** (no parameters):\nPaginated list of all available model endpoints with minimal metadata.\n\n**2. Find Mode** (`endpoint_id` parameter):\nRetrieve specific model endpoint(s) by ID. Supports single or multiple IDs.\n\n**3. Search Mode** (search parameters):\nFilter models by free-text query, category, or status.\n\n**Expansion:**\nUse `expand` to include additional data in each model object:\n- `openapi-3.0` — full OpenAPI 3.0 schema in the `openapi` field\n- `enterprise_status` — enterprise readiness status (`ready` or `pending`) in the `enterprise_status` field\n\n**Examples of `endpoint_id` values:**\n- `fal-ai/flux/dev`\n- `fal-ai/wan/v2.2-a14b/text-to-video`\n- `fal-ai/minimax/video-01/image-to-video`\n- `fal-ai/hunyuan3d-v21`\n\nSee [fal.ai Model APIs](https://docs.fal.ai/model-apis) for more details.\n\n**Authentication:** Optional. Providing an API key grants higher rate limits.\n\n**Common Use Cases:**\n- Browse available models for integration\n- Retrieve metadata for specific endpoints\n- Search for models by category or keywords\n- Get OpenAPI schemas for code generation\n- Build model selection interfaces\n ","tags":["Models"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Endpoint ID(s) to retrieve (e.g., 'fal-ai/flux/dev'). Can be a single value or multiple values (1-50 models). When combined with search params, narrows results to these IDs. Use array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev","fal-ai/flux-pro"]},"required":false,"description":"Endpoint ID(s) to retrieve (e.g., 'fal-ai/flux/dev'). Can be a single value or multiple values (1-50 models). When combined with search params, narrows results to these IDs. Use array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Free-text search query to filter models by name, description, or category","example":"text to image"},"required":false,"description":"Free-text search query to filter models by name, description, or category","name":"q","in":"query"},{"schema":{"type":"string","description":"Filter by category (e.g., 'text-to-image', 'image-to-video', 'training')","example":"text-to-image"},"required":false,"description":"Filter by category (e.g., 'text-to-image', 'image-to-video', 'training')","name":"category","in":"query"},{"schema":{"type":"string","enum":["active","deprecated"],"description":"Filter models by status - omit to include all statuses","example":"active"},"required":false,"description":"Filter models by status - omit to include all statuses","name":"status","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Fields to expand in the response. Supported values: 'openapi-3.0' (includes full OpenAPI 3.0 schema in 'openapi' field), 'enterprise_status' (includes enterprise readiness status)","example":["openapi-3.0","enterprise_status"]},"required":false,"description":"Fields to expand in the response. Supported values: 'openapi-3.0' (includes full OpenAPI 3.0 schema in 'openapi' field), 'enterprise_status' (includes enterprise readiness status)","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Successfully retrieved model endpoints","content":{"application/json":{"schema":{"type":"object","properties":{"models":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Stable identifier used to call the model (e.g., 'fal-ai/wan/v2.2-a14b/text-to-video', 'fal-ai/minimax/video-01/image-to-video', 'fal-ai/hunyuan3d-v21')"},"metadata":{"type":"object","properties":{"display_name":{"type":"string","description":"Human-readable label shown on Explore/Model pages"},"category":{"type":"string","description":"Model category (e.g., 'text-to-image', 'image-to-video', 'text-to-video', 'image-to-3d', 'training')"},"description":{"type":"string","description":"Brief description of the model's capabilities and use cases"},"status":{"type":"string","enum":["active","deprecated"],"description":"'active' or 'deprecated'. Newest models are surfaced in Explore and may be flagged as 'new/beta' in tags"},"tags":{"type":"array","items":{"type":"string"},"description":"Freeform tags such as 'new', 'beta', 'pro', or 'turbo' (Explore badges)"},"updated_at":{"type":"string","description":"ISO8601 timestamp of when the model was last updated"},"is_favorited":{"type":["boolean","null"],"description":"Whether the model is favorited by the authenticated user (null when unauthenticated)"},"thumbnail_url":{"type":"string","description":"Main thumbnail image URL"},"thumbnail_animated_url":{"type":"string","description":"Animated thumbnail URL (optional)"},"model_url":{"type":"string","description":"Full model endpoint URL (e.g., https://fal.run/...)"},"github_url":{"type":"string","description":"License or GitHub URL (optional)"},"license_type":{"type":"string","enum":["commercial","research","private"],"description":"License type for the model (optional)"},"date":{"type":"string","description":"ISO8601 timestamp of model creation"},"group":{"type":"object","properties":{"key":{"type":"string","description":"Group key identifier"},"label":{"type":"string","description":"Human-readable group label"}},"required":["key","label"],"description":"Model group information (optional)"},"highlighted":{"type":"boolean","description":"Whether the model is highlighted (deprecated, always false)","deprecated":true,"example":false},"kind":{"type":"string","enum":["inference","training"],"description":"Model kind - inference or training (optional)"},"training_endpoint_ids":{"type":"array","items":{"type":"string"},"description":"Related training endpoint IDs (optional, only present when non-empty, for inference models)"},"inference_endpoint_ids":{"type":"array","items":{"type":"string"},"description":"Related inference endpoint IDs (optional, only present when non-empty, for training models)"},"stream_url":{"type":"string","description":"Streaming endpoint URL (optional)"},"duration_estimate":{"type":"number","description":"Estimated duration in minutes (optional)"},"pinned":{"type":"boolean","description":"Whether the model is pinned (deprecated, always false)","deprecated":true,"example":false}},"required":["display_name","category","description","status","tags","updated_at","is_favorited","thumbnail_url","model_url","date","highlighted","pinned"],"description":"Model metadata (optional - may be absent for endpoints without registry entries)"},"openapi":{"anyOf":[{"type":"object","properties":{"openapi":{"type":"string","description":"OpenAPI version (e.g., '3.0.4')"}},"required":["openapi"],"additionalProperties":{},"description":"OpenAPI 3.0 specification for the model"},{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Error code (e.g., 'expansion_failed')"},"message":{"type":"string","description":"Human-readable error message"}},"required":["code","message"],"description":"Error details for failed OpenAPI expansion"}},"required":["error"],"description":"Error encountered while expanding OpenAPI schema"}],"description":"OpenAPI 3.0 specification or error (present when expand=openapi-3.0 is requested)"},"enterprise_status":{"anyOf":[{"type":"string","enum":["ready","pending"],"description":"'ready' means approved for enterprise use, 'pending' means awaiting approval"},{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Error code (e.g., 'expansion_failed')"},"message":{"type":"string","description":"Human-readable error message"}},"required":["code","message"],"description":"Error details for failed enterprise status expansion"}},"required":["error"],"description":"Error encountered while expanding enterprise status"}],"description":"Enterprise readiness status (present when expand=enterprise_status is requested)"}},"required":["endpoint_id"],"description":"Model information with optional metadata and expandable fields"},"description":"Array of model information"},"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"}},"required":["models","has_more"],"description":"Response containing model data with pagination support"},"example":{"models":[{"endpoint_id":"fal-ai/flux/dev","metadata":{"display_name":"FLUX.1 [dev]","category":"text-to-image","description":"Fast text-to-image generation","status":"active","tags":["fast","pro"],"updated_at":"2025-01-15T12:00:00Z","is_favorited":false,"thumbnail_url":"https://fal.media/files/example.jpg","model_url":"https://fal.run/fal-ai/flux/dev","date":"2024-08-01T00:00:00Z","highlighted":false,"pinned":false}}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/models/pricing":{"get":{"operationId":"getPricing","summary":"Pricing","x-mint":{"href":"/platform-apis/v1/models/pricing","metadata":{"sidebarTitle":"Pricing"}},"description":"\nReturns unit pricing for requested endpoint IDs. Most models use\n**output-based** pricing (e.g., per image/video with proportional\nadjustments for resolution/length). Some models use **GPU-based** pricing\ndepending on architecture. Values are expressed per model's billing unit\nin a given currency.\n\n**Authentication:** Required. Users must provide a valid API key. \nCustom pricing or discounts may be applied based on account status.\n\n**Common Use Cases:**\n- Display pricing in user interfaces\n- Compare pricing across different models\n- Build cost estimation tools\n- Check current billing rates\n\nSee [fal.ai pricing](https://fal.ai/pricing) for more details.\n ","tags":["Models","Pricing"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":true,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Pricing information retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"prices":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier (e.g., 'fal-ai/wan/v2.2-a14b/text-to-video', 'fal-ai/minimax/video-01/image-to-video')"},"unit_price":{"type":"number","minimum":0,"description":"Base price per billing unit (often per generated output; may be per GPU-second for some models) in the specified currency"},"unit":{"type":"string","description":"Unit of measurement for billing: 'image', 'video', or provider-specific GPU/compute unit when applicable. Most models use output-based pricing."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"}},"required":["endpoint_id","unit_price","unit","currency"],"description":"Pricing information for a specific model endpoint. Most models use output-based pricing (e.g., per image/video with proportional adjustments for resolution/length). Some models use GPU-based pricing depending on architecture."},"description":"Pricing information for requested endpoints"}},"required":["next_cursor","has_more","prices"],"description":"Response containing pricing information for requested endpoints"},"example":{"prices":[{"endpoint_id":"fal-ai/flux/dev","unit_price":0.025,"unit":"image","currency":"USD"}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}}}}},"/models/pricing/estimate":{"post":{"operationId":"estimatePricing","summary":"Estimate cost","x-mint":{"href":"/platform-apis/v1/models/pricing/estimate","metadata":{"sidebarTitle":"Estimate Cost"}},"description":"\nComputes cost estimates using one of two methods:\n\n**1. Historical API Price** (`historical_api_price`):\n- Based on historical pricing per API call from past usage patterns\n- Takes `call_quantity` (number of API calls) per endpoint\n- Useful for estimating based on actual historical usage patterns\n- Example: \"How much will 100 calls to flux/dev cost?\"\n\n**2. Unit Price** (`unit_price`):\n- Based on unit price × expected billing units from pricing service\n- Takes `unit_quantity` (number of billing units like images/videos) per endpoint\n- Useful when you know the expected output quantity\n- Example: \"How much will 50 images from flux/dev cost?\"\n\n**Authentication:** Required. Users must provide a valid API key.\nCustom pricing or discounts may be applied based on account status.\n\n**Common Use Cases:**\n- Pre-calculate costs for batch operations\n- Display cost estimates in user interfaces\n- Budget planning and cost optimization\n\nSee [fal.ai pricing](https://fal.ai/pricing) for more details.\n ","tags":["Models","Pricing"],"security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"estimate_type":{"type":"string","enum":["historical_api_price"],"description":"Estimate type: historical API pricing based on past usage patterns"},"endpoints":{"type":"object","additionalProperties":{"type":"object","properties":{"call_quantity":{"type":"integer","minimum":1,"description":"Number of API calls to estimate (regardless of units per call)"}},"required":["call_quantity"]},"description":"Map of endpoint IDs to call quantities"}},"required":["estimate_type","endpoints"],"description":"Historical API price estimate: Calculates cost based on historical pricing per API call. Useful for estimating costs based on actual usage patterns."},{"type":"object","properties":{"estimate_type":{"type":"string","enum":["unit_price"],"description":"Estimate type: unit price calculation based on billing units"},"endpoints":{"type":"object","additionalProperties":{"type":"object","properties":{"unit_quantity":{"type":"number","minimum":0.000001,"description":"Number of billing units expected (e.g., number of images, videos, etc.)"}},"required":["unit_quantity"]},"description":"Map of endpoint IDs to unit quantities"}},"required":["estimate_type","endpoints"],"description":"Unit price estimate: Calculates cost based on unit price × billing units. Useful for estimating costs when you know the expected output quantity."}],"example":{"estimate_type":"historical_api_price","endpoints":{"fal-ai/flux/dev":{"call_quantity":100},"fal-ai/flux/schnell":{"call_quantity":50}}}},"examples":{"historical":{"value":{"estimate_type":"historical_api_price","endpoints":{"fal-ai/flux/dev":{"call_quantity":100},"fal-ai/flux/schnell":{"call_quantity":50}}},"summary":"Historical API price estimate"},"unit_price":{"value":{"estimate_type":"unit_price","endpoints":{"fal-ai/flux/dev":{"unit_quantity":50},"fal-ai/flux-pro":{"unit_quantity":25}}},"summary":"Unit price estimate"}}}}},"responses":{"200":{"description":"Cost estimates calculated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"estimate_type":{"type":"string","enum":["historical_api_price","unit_price"],"description":"The type of estimate that was performed"},"total_cost":{"type":"number","minimum":0,"description":"Total estimated cost across all endpoints"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"}},"required":["estimate_type","total_cost","currency"],"description":"Cost estimation response with total cost","example":{"estimate_type":"historical_api_price","total_cost":3.75,"currency":"USD"}},"examples":{"historical":{"value":{"estimate_type":"historical_api_price","total_cost":3.75,"currency":"USD"},"summary":"Historical API price estimate result"},"unit_price":{"value":{"estimate_type":"unit_price","total_cost":1.88,"currency":"USD"},"summary":"Unit price estimate result"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}}}}},"/models/usage":{"get":{"operationId":"getUsage","summary":"Usage","x-mint":{"href":"/platform-apis/v1/models/usage","metadata":{"sidebarTitle":"Usage"}},"description":"\nReturns paginated usage records for your workspace with filters for endpoint,\nuser, date range, and auth method. Each item includes the billed unit\nquantity and unit price used to compute cost.\n\n**Key Features:**\n- Usage data for all endpoints or filtered by specific endpoint(s)\n- Flexible date range filtering\n- User-specific usage tracking\n- Detailed usage line items with unit quantity and price\n- Paginated results for large datasets\n\n**Common Use Cases:**\n- Generate usage reports for all endpoints or specific models\n- Track usage patterns\n- Monitor endpoint usage across different auth methods\n- Build usage dashboards and visualizations\n\nSee [fal.ai docs](https://docs.fal.ai/model-apis/faq) for more details.\n ","tags":["Models","Usage"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":false,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific API key ID(s). Accepts 1-50 key IDs. Supports comma-separated values: ?api_key_id=key1,key2 or array syntax: ?api_key_id=key1&api_key_id=key2","example":["abc123"]},"required":false,"description":"Filter by specific API key ID(s). Accepts 1-50 key IDs. Supports comma-separated values: ?api_key_id=key1,key2 or array syntax: ?api_key_id=key1&api_key_id=key2","name":"api_key_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by team member login username(s) (nickname). Accepts 1-50 usernames. Supports comma-separated values: ?login_username=alice,bob or array syntax: ?login_username=alice&login_username=bob","example":["alice"]},"required":false,"description":"Filter by team member login username(s) (nickname). Accepts 1-50 usernames. Supports comma-separated values: ?login_username=alice,bob or array syntax: ?login_username=alice&login_username=bob","name":"login_username","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["time_series"],"description":"Data to include in the response. Use 'time_series' for time-bucketed data, 'summary' for aggregate statistics, 'auth_method' to include a formatted authentication method label, and 'auth_method_structured' to include a machine-readable auth method object (detail, api_key_id, login_username). At least one of 'time_series' or 'summary' is required.","example":["time_series","auth_method"]},"required":false,"description":"Data to include in the response. Use 'time_series' for time-bucketed data, 'summary' for aggregate statistics, 'auth_method' to include a formatted authentication method label, and 'auth_method_structured' to include a machine-readable auth method object (detail, api_key_id, login_username). At least one of 'time_series' or 'summary' is required.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Usage data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"time_series":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"Time bucket timestamp in user's timezone with offset (ISO8601 datetime)"},"results":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier that was used (e.g., 'fal-ai/flux/dev')"},"unit":{"type":"string","description":"The billing unit (e.g., 'image', 'video', or a GPU/compute unit for some models)"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit"},"unit_price":{"type":"number","minimum":0,"description":"Unit price used to compute charges for this line item"},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price)"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"},"auth_method":{"type":"string","description":"Authentication method label (e.g., 'Key 1', 'Key 2', 'User token'). Only populated when 'auth_method' is included in expand parameter."},"auth_method_structured":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable summary of the authentication method (key alias, login username, or 'User token'/'None')."},"api_key_id":{"type":"string","description":"API key ID, present when the request was made with an API key."},"login_username":{"type":"string","description":"Team member login username (nickname), present when the request was made with a user login token resolvable to a team member."}},"required":["detail"],"description":"Structured authentication method identity. Only populated when 'auth_method_structured' is included in expand parameter."}},"required":["endpoint_id","unit","quantity","unit_price","cost","currency"],"description":"Usage line item with billing details"},"description":"Usage records for this time bucket"}},"required":["bucket","results"],"description":"Time bucket with grouped usage records"},"description":"Time series usage data grouped by time bucket (when expand includes 'time_series'). Each bucket contains all usage records for that time period."},"summary":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier that was used (e.g., 'fal-ai/flux/dev')"},"unit":{"type":"string","description":"The billing unit (e.g., 'image', 'video', or a GPU/compute unit for some models)"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit"},"unit_price":{"type":"number","minimum":0,"description":"Unit price used to compute charges for this line item"},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price)"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"},"auth_method":{"type":"string","description":"Authentication method label (e.g., 'Key 1', 'Key 2', 'User token'). Only populated when 'auth_method' is included in expand parameter."},"auth_method_structured":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable summary of the authentication method (key alias, login username, or 'User token'/'None')."},"api_key_id":{"type":"string","description":"API key ID, present when the request was made with an API key."},"login_username":{"type":"string","description":"Team member login username (nickname), present when the request was made with a user login token resolvable to a team member."}},"required":["detail"],"description":"Structured authentication method identity. Only populated when 'auth_method_structured' is included in expand parameter."}},"required":["endpoint_id","unit","quantity","unit_price","cost","currency"],"description":"Aggregate usage statistics for the entire date range"},"description":"Aggregate statistics (when expand includes 'summary')"}},"required":["next_cursor","has_more"],"description":"Response containing usage data with pagination support"},"example":{"time_series":[{"bucket":"2025-01-15T00:00:00-05:00","results":[{"endpoint_id":"fal-ai/flux/dev","unit":"image","quantity":4,"unit_price":0.1,"cost":0.4,"currency":"USD","auth_method":"Production Key"}]}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}}}}},"/models/analytics":{"get":{"operationId":"getAnalytics","summary":"Analytics","x-mint":{"href":"/platform-apis/v1/models/analytics","metadata":{"sidebarTitle":"Analytics"}},"description":"\nTime-bucketed metrics per model endpoint, including request counts, success/error\nrates, and latency percentiles. `prepare_duration` reflects queue/prepare\ntime before execution; `duration` is request execution time. Use with the\nQueue/Webhooks flow to monitor SLAs.\n\n**Metric Selection:**\nYou must specify which metrics to include using the `expand` query\nparameter. Only requested metrics will be populated in the response,\nallowing you to optimize query performance and data transfer.\n\n**Available Metrics:**\n\nThe `expand` parameter accepts these values, grouped by category:\n\n*Volume*\n- `request_count`: Total number of requests in the time bucket\n- `success_count`: Successful requests (2xx responses)\n- `user_error_count`: User errors (4xx responses)\n- `error_count`: Server errors (5xx responses)\n\n*Error type breakdown*\n- `startup_error_count`: Startup errors (startup timeout, scheduling failure)\n- `connection_error_count`: Connection errors (timeout, disconnected, refused)\n- `timeout_error_count`: Request timeout errors\n- `runtime_error_count`: Runtime errors (internal error, server error)\n\n*Queue / prepare latency*\n- `p50_prepare_duration`, `p75_prepare_duration`, `p90_prepare_duration`, `p95_prepare_duration`, `p99_prepare_duration`: Time from request submission until execution starts\n\n*Request execution latency*\n- `p25_duration`, `p50_duration`, `p75_duration`, `p90_duration`, `p95_duration`, `p99_duration`: Time spent processing the request\n\n*Cold boot*\n- `cold_boot_count`: Requests with cold boot (startup > 1s)\n- `p50_cold_boot_duration`, `p75_cold_boot_duration`, `p90_cold_boot_duration`: Cold boot duration percentiles\n\n*Billing*\n- `total_billable_duration`: Aggregate billed execution time\n\n**Key Features:**\n- Selective metric inclusion via expand parameter\n- Performance metrics (latency percentiles, duration stats)\n- Reliability metrics (success/error rates, request counts)\n- Error type breakdown (startup, connection, timeout, runtime)\n- Cold boot metrics (count, latency percentiles)\n- Billing duration tracking\n- Time-bucketed data for trend analysis\n- Single or multi-model analytics\n- Flexible date range and timeframe options\n\n**Common Use Cases:**\n- Monitor model performance and reliability\n- Generate performance dashboards\n- Analyze latency trends and patterns\n- Track error rates and success metrics\n\nSee [Queue API docs](https://docs.fal.ai/model-apis/model-endpoints/queue) for more details.\n ","tags":["Models","Analytics"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":true,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["time_series","request_count"],"description":"Data and metrics to include in the response. Use 'time_series' for time-bucketed data, metric names for specific metrics in time series, and 'summary' for aggregate statistics. At least one of 'time_series' or 'summary' and at least one metric are required.","example":["request_count","success_count"]},"required":false,"description":"Data and metrics to include in the response. Use 'time_series' for time-bucketed data, metric names for specific metrics in time series, and 'summary' for aggregate statistics. At least one of 'time_series' or 'summary' and at least one metric are required.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Analytics data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"time_series":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"Time bucket timestamp in user's timezone with offset (ISO8601 datetime)"},"results":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier for these statistics"},"request_count":{"type":"integer","minimum":0,"description":"Total number of requests"},"success_count":{"type":"integer","minimum":0,"description":"Number of successful requests (2xx responses)"},"user_error_count":{"type":"integer","minimum":0,"description":"Number of user errors (4xx responses)"},"error_count":{"type":"integer","minimum":0,"description":"Number of server errors (5xx responses)"},"p50_prepare_duration":{"type":"number","minimum":0,"description":"50th percentile queue/prepare time before execution in seconds"},"p75_prepare_duration":{"type":"number","minimum":0,"description":"75th percentile queue/prepare time before execution in seconds"},"p90_prepare_duration":{"type":"number","minimum":0,"description":"90th percentile queue/prepare time before execution in seconds"},"p95_prepare_duration":{"type":"number","minimum":0,"description":"95th percentile queue/prepare time before execution in seconds"},"p99_prepare_duration":{"type":"number","minimum":0,"description":"99th percentile queue/prepare time before execution in seconds"},"p50_duration":{"type":"number","minimum":0,"description":"50th percentile request execution duration in seconds"},"p75_duration":{"type":"number","minimum":0,"description":"75th percentile request execution duration in seconds"},"p90_duration":{"type":"number","minimum":0,"description":"90th percentile request execution duration in seconds"},"p25_duration":{"type":"number","minimum":0,"description":"25th percentile request execution duration in seconds"},"p95_duration":{"type":"number","minimum":0,"description":"95th percentile request execution duration in seconds"},"p99_duration":{"type":"number","minimum":0,"description":"99th percentile request execution duration in seconds"},"startup_error_count":{"type":"integer","minimum":0,"description":"Number of startup errors (startup timeout, scheduling failure)"},"connection_error_count":{"type":"integer","minimum":0,"description":"Number of connection errors (connection timeout, disconnected, refused)"},"timeout_error_count":{"type":"integer","minimum":0,"description":"Number of request timeout errors"},"runtime_error_count":{"type":"integer","minimum":0,"description":"Number of runtime errors (internal error, server error)"},"cold_boot_count":{"type":"integer","minimum":0,"description":"Number of requests with cold boot (startup time > 1 second)"},"p50_cold_boot_duration":{"type":"number","minimum":0,"description":"50th percentile cold boot duration in seconds (only cold starts)"},"p75_cold_boot_duration":{"type":"number","minimum":0,"description":"75th percentile cold boot duration in seconds (only cold starts)"},"p90_cold_boot_duration":{"type":"number","minimum":0,"description":"90th percentile cold boot duration in seconds (only cold starts)"},"total_billable_duration":{"type":"number","minimum":0,"description":"Total billable execution duration in seconds (sum of all request durations)"}},"required":["endpoint_id"],"description":"Performance and reliability analytics. Only requested metrics (via expand parameter) will be present in the response. 'prepare_duration' reflects queue/prepare time before execution; 'duration' is request execution time."},"description":"Analytics records for this time bucket"}},"required":["bucket","results"],"description":"Time bucket with grouped analytics records"},"description":"Time series analytics data grouped by time bucket (when expand includes 'time_series'). Each bucket contains all analytics records for that time period."},"summary":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier for these statistics"},"request_count":{"type":"integer","minimum":0,"description":"Total number of requests"},"success_count":{"type":"integer","minimum":0,"description":"Number of successful requests (2xx responses)"},"user_error_count":{"type":"integer","minimum":0,"description":"Number of user errors (4xx responses)"},"error_count":{"type":"integer","minimum":0,"description":"Number of server errors (5xx responses)"},"p50_prepare_duration":{"type":"number","minimum":0,"description":"50th percentile queue/prepare time before execution in seconds"},"p75_prepare_duration":{"type":"number","minimum":0,"description":"75th percentile queue/prepare time before execution in seconds"},"p90_prepare_duration":{"type":"number","minimum":0,"description":"90th percentile queue/prepare time before execution in seconds"},"p95_prepare_duration":{"type":"number","minimum":0,"description":"95th percentile queue/prepare time before execution in seconds"},"p99_prepare_duration":{"type":"number","minimum":0,"description":"99th percentile queue/prepare time before execution in seconds"},"p50_duration":{"type":"number","minimum":0,"description":"50th percentile request execution duration in seconds"},"p75_duration":{"type":"number","minimum":0,"description":"75th percentile request execution duration in seconds"},"p90_duration":{"type":"number","minimum":0,"description":"90th percentile request execution duration in seconds"},"p25_duration":{"type":"number","minimum":0,"description":"25th percentile request execution duration in seconds"},"p95_duration":{"type":"number","minimum":0,"description":"95th percentile request execution duration in seconds"},"p99_duration":{"type":"number","minimum":0,"description":"99th percentile request execution duration in seconds"},"startup_error_count":{"type":"integer","minimum":0,"description":"Number of startup errors (startup timeout, scheduling failure)"},"connection_error_count":{"type":"integer","minimum":0,"description":"Number of connection errors (connection timeout, disconnected, refused)"},"timeout_error_count":{"type":"integer","minimum":0,"description":"Number of request timeout errors"},"runtime_error_count":{"type":"integer","minimum":0,"description":"Number of runtime errors (internal error, server error)"},"cold_boot_count":{"type":"integer","minimum":0,"description":"Number of requests with cold boot (startup time > 1 second)"},"p50_cold_boot_duration":{"type":"number","minimum":0,"description":"50th percentile cold boot duration in seconds (only cold starts)"},"p75_cold_boot_duration":{"type":"number","minimum":0,"description":"75th percentile cold boot duration in seconds (only cold starts)"},"p90_cold_boot_duration":{"type":"number","minimum":0,"description":"90th percentile cold boot duration in seconds (only cold starts)"},"total_billable_duration":{"type":"number","minimum":0,"description":"Total billable execution duration in seconds (sum of all request durations)"}},"required":["endpoint_id"],"description":"Aggregate performance statistics for the entire date range"},"description":"Aggregate statistics (when expand includes 'summary')"}},"required":["next_cursor","has_more"],"description":"Response containing performance analytics with pagination support"},"example":{"time_series":[{"bucket":"2025-01-15T12:00:00-05:00","results":[{"endpoint_id":"fal-ai/flux/dev","request_count":1500,"success_count":1450,"p50_duration":2.5,"p90_duration":4.8}]}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/models/billing-events":{"get":{"operationId":"getBillingEvents","summary":"Billing Events","x-mint":{"href":"/platform-apis/v1/models/billing-events","metadata":{"sidebarTitle":"Billing Events"}},"description":"\nReturns paginated individual billing event records with filters\nfor endpoint and date range. Each record includes the request ID, timestamp,\nendpoint, and output units billed.\n\n**Key Features:**\n- Individual billing event records for each API request\n- Flexible date range filtering\n- Optional endpoint filtering\n- Cursor-based pagination for efficient large dataset queries\n- Limited to 10000 records per page for performance\n- Date range capped at 90 days per request\n\n**Common Use Cases:**\n- Audit individual billing events\n- Track request patterns and volumes\n- Debug specific requests by ID\n- Monitor billing unit consumption per request\n\nSee [fal.ai docs](https://docs.fal.ai/model-apis/faq) for more details.\n ","tags":["Models","Usage"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":false,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific request ID(s). Accepts 1-50 request IDs. Supports comma-separated values: ?request_id=req1,req2 or array syntax: ?request_id=req1&request_id=req2","example":["req-abc123"]},"required":false,"description":"Filter by specific request ID(s). Accepts 1-50 request IDs. Supports comma-separated values: ?request_id=req1,req2 or array syntax: ?request_id=req1&request_id=req2","name":"request_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific API key ID(s). Accepts 1-50 key IDs. Supports comma-separated values: ?api_key_id=key1,key2 or array syntax: ?api_key_id=key1&api_key_id=key2","example":["abc123"]},"required":false,"description":"Filter by specific API key ID(s). Accepts 1-50 key IDs. Supports comma-separated values: ?api_key_id=key1,key2 or array syntax: ?api_key_id=key1&api_key_id=key2","name":"api_key_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by team member login username(s) (nickname). Accepts 1-50 usernames. Supports comma-separated values: ?login_username=alice,bob or array syntax: ?login_username=alice&login_username=bob","example":["alice"]},"required":false,"description":"Filter by team member login username(s) (nickname). Accepts 1-50 usernames. Supports comma-separated values: ?login_username=alice,bob or array syntax: ?login_username=alice&login_username=bob","name":"login_username","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Data to include in the response. Use 'auth_method' for a formatted authentication method label, and 'auth_method_structured' for a machine-readable auth method object (detail, api_key_id, login_username).","example":"auth_method"},"required":false,"description":"Data to include in the response. Use 'auth_method' for a formatted authentication method label, and 'auth_method_structured' for a machine-readable auth method object (detail, api_key_id, login_username).","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Billing event data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"billing_events":{"type":"array","items":{"type":"object","properties":{"request_id":{"type":"string","description":"Unique identifier for the request"},"endpoint_id":{"type":"string","description":"Endpoint identifier that was used (e.g., 'fal-ai/flux/dev')"},"timestamp":{"type":"string","description":"Request timestamp in ISO8601 format"},"output_units":{"type":["number","null"],"minimum":0,"description":"Custom billing units for this request"},"unit_price":{"type":["number","null"],"minimum":0,"description":"Unit price for this request"},"percent_discount":{"type":["number","null"],"description":"Discount percentage applied to this request (e.g., 10 = 10% discount)"},"cost_estimate_nano_usd":{"type":"number","minimum":0,"description":"Estimated cost in nano USD (1 USD = 1,000,000,000 nano USD)"},"auth_method":{"type":"string","description":"Authentication method label (e.g., 'Key 1', 'API Key', 'User token'). Only populated when 'auth_method' is included in expand parameter."},"auth_method_structured":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable summary of the authentication method (key alias, login username, or 'User token'/'None')."},"api_key_id":{"type":"string","description":"API key ID, present when the request was made with an API key."},"login_username":{"type":"string","description":"Team member login username (nickname), present when the request was made with a user login token resolvable to a team member."}},"required":["detail"],"description":"Structured authentication method identity. Only populated when 'auth_method_structured' is included in expand parameter."}},"required":["request_id","endpoint_id","timestamp","output_units","unit_price","percent_discount","cost_estimate_nano_usd"],"description":"Individual billing event record with details"},"description":"List of billing event records"}},"required":["next_cursor","has_more","billing_events"],"description":"Response containing billing event data with pagination support"},"example":{"billing_events":[{"request_id":"abc123","endpoint_id":"fal-ai/flux/dev","timestamp":"2025-01-15T10:30:45Z","output_units":1.5,"unit_price":0.001,"percent_discount":null,"cost_estimate_nano_usd":1500000},{"request_id":"def456","endpoint_id":"fal-ai/flux/dev","timestamp":"2025-01-15T10:25:30Z","output_units":2,"unit_price":0.001,"percent_discount":10,"cost_estimate_nano_usd":1800000}],"next_cursor":"MjAyNS0wMS0xNVQxMDoyNTozMFo=","has_more":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}}}}},"/models/requests/{request_id}/payloads":{"delete":{"operationId":"deleteRequestPayloads","summary":"Delete request payloads","x-mint":{"href":"/platform-apis/v1/models/requests/payloads","metadata":{"sidebarTitle":"Delete Request Payloads"}},"description":"Deletes the IO payloads and associated CDN output files for a specific request.\n\n**Important:**\n- Only **output** CDN files are deleted (input files may be used by other requests)\n- This action is irreversible\n- Requires authentication with an admin API key\n\n**What gets deleted:**\n- Request input/output payload data\n- CDN-hosted output files (images, videos, etc.)\n\n**What is NOT deleted:**\n- Input CDN files (may be referenced by other requests)\n\n**Response:**\n- Returns deletion status for each CDN file\n- Each result includes the file link and any error that occurred\n\n**Idempotency:**\n- Optional Idempotency-Key header prevents duplicate deletions on retries\n- Responses cached for 10 minutes per unique key\n\nSee [fal.ai docs](https://docs.fal.ai/model-apis/payloads) for more details about request payloads.","tags":["Models","Requests"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"Unique identifier for the request (UUID format)","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"required":true,"description":"Unique identifier for the request (UUID format)","name":"request_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Request payloads deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"cdn_delete_results":{"type":"array","items":{"type":"object","properties":{"link":{"type":"string","description":"CDN URL of the file that was targeted for deletion","example":"https://v3.fal.media/files/example/output.png"},"exception":{"type":["string","null"],"description":"Error message if deletion failed for this file, null if successful","example":null}},"required":["link","exception"],"description":"Result of deleting a single CDN file"},"description":"Array of deletion results for each CDN file associated with the request output"}},"required":["cdn_delete_results"],"description":"Response containing the results of deleting request payloads and CDN output files"},"example":{"cdn_delete_results":[{"link":"https://v3.fal.media/files/abc123/output.png","exception":null},{"link":"https://v3.fal.media/files/def456/output.mp4","exception":null}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/models/requests/by-endpoint":{"get":{"operationId":"listRequestsByEndpoint","summary":"List requests by endpoint(s)","x-mint":{"href":"/platform-apis/v1/models/requests/by-endpoint","metadata":{"sidebarTitle":"List Requests by Endpoint"}},"description":"Lists requests for one or more endpoints (same `endpoint_id` style as usage/explore:\ncomma-separated or repeated query params, up to 50 IDs).\n\n**Authentication:** Requires API key (user or enterprise).\n\n**Filters:**\n- Time range via start / end. If `start` is omitted, defaults to the last 24 hours — unless `request_id` is provided, in which case the default start bound is widened to 90 days.\n- Status (success, error, user_error)\n- Request ID\n- Pagination via cursor/limit (limit defaults to 50, max 100)\n\n**Sorting:**\n- By end time (default) or duration\n\n**Expansions:**\n- Include payloads by adding expand=payloads","tags":["Models","Requests"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Number of items to return per page (max 100)","example":20},"required":false,"description":"Number of items to return per page (max 100)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor encoding the page number","example":"Mg=="},"required":false,"description":"Pagination cursor encoding the page number","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":true,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","enum":["success","error","user_error"],"description":"Filter by request status","example":"success"},"required":false,"description":"Filter by request status","name":"status","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Filter by specific request ID","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"required":false,"description":"Filter by specific request ID","name":"request_id","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Fields to expand in the response. Use payloads to include input and output payloads.","example":["payloads"]},"required":false,"description":"Fields to expand in the response. Use payloads to include input and output payloads.","name":"expand","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","enum":["ended_at","duration"],"default":"ended_at","description":"Sort results by end time or duration","example":"ended_at"},"required":false,"description":"Sort results by end time or duration","name":"sort_by","in":"query"}],"responses":{"200":{"description":"Requests listed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"items":{"type":"array","items":{"type":"object","properties":{"request_id":{"type":"string","format":"uuid","description":"Unique identifier for the request","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"endpoint_id":{"type":"string","description":"Endpoint that was executed for this request","example":"fal-ai/flux/dev"},"started_at":{"type":"string","format":"date-time","description":"Time when request processing started","example":"2025-01-01T00:00:05Z"},"sent_at":{"type":"string","format":"date-time","description":"Time when request was sent to the backend","example":"2025-01-01T00:00:01Z"},"ended_at":{"type":["string","null"],"format":"date-time","description":"Time when request finished processing","example":"2025-01-01T00:00:08Z"},"status_code":{"type":["integer","null"],"description":"HTTP status code returned by the request","example":200},"duration":{"type":["number","null"],"description":"Total request duration in seconds","example":7.8},"json_input":{"description":"Input payload for the request"},"json_output":{"description":"Output payload for the request"}},"required":["request_id","endpoint_id","started_at","sent_at"],"description":"Request item"},"description":"List of requests matching the filter"}},"required":["next_cursor","has_more","items"],"description":"Paginated list of requests for the specified endpoint"},"example":{"items":[{"request_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","endpoint_id":"fal-ai/flux/dev","started_at":"2025-01-01T00:00:05Z","sent_at":"2025-01-01T00:00:01Z","ended_at":"2025-01-01T00:00:08Z","status_code":200,"duration":7.8,"json_input":{"prompt":"cat astronaut"},"json_output":{"status":"ok"}}],"next_cursor":"Mg==","has_more":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/models/requests/search":{"get":{"operationId":"searchRequests","summary":"Search Requests","x-mint":{"href":"/platform-apis/v1/models/requests/search","mcp":{"enabled":true},"metadata":{"sidebarTitle":"Search Requests"}},"description":"Search, filter, and browse your request history. Supports three modes:\n\n**1. Semantic Search** (`query`, `image_url`, or `video_url` parameter):\nFind visually or conceptually similar results using AI embeddings. Provide a text\nquery for text-to-image search, an image URL for image-to-image similarity search,\nor a video URL for video-to-image similarity search.\n\n**2. Filtered Browse** (no `query`, `image_url`, or `video_url`):\nBrowse request history with hard filters. Returns results ordered by creation date (newest first).\n\n**3. Semantic + Filters** (search params AND filter params):\nCombine semantic search with hard filters. Filters narrow the candidate set before\nranking by similarity.\n\n**Filter Options:**\n- `endpoint_id`: Filter by one or more fal endpoints (comma-separated or repeated, up to 50 IDs)\n- `exclude_api_requests` / `only_api_requests`: Filter by request source\n\n**Examples:**\n- Semantic text search: `?query=sunset+landscape`\n- Image similarity: `?image_url=https://...&min_similarity=0.5`\n- Filtered search: `?query=portrait&endpoint_id=fal-ai/flux/dev`\n- Browse across multiple endpoints: `?endpoint_id=fal-ai/flux/dev,fal-ai/flux/schnell`","tags":["Models","Requests"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"type":"string","description":"Text search query for semantic search. Mutually exclusive with image_url and video_url.","example":"sunset landscape"},"required":false,"description":"Text search query for semantic search. Mutually exclusive with image_url and video_url.","name":"query","in":"query"},{"schema":{"type":"string","description":"Image URL for similarity search. Mutually exclusive with query and video_url.","example":"https://v3.fal.media/files/abc123/output.png"},"required":false,"description":"Image URL for similarity search. Mutually exclusive with query and video_url.","name":"image_url","in":"query"},{"schema":{"type":"string","description":"Video URL for similarity search. Mutually exclusive with query and image_url.","example":"https://v3.fal.media/files/abc123/output.mp4"},"required":false,"description":"Video URL for similarity search. Mutually exclusive with query and image_url.","name":"video_url","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by one or more fal endpoints to scope request history. Accepts comma-separated or repeated values (1-50 IDs).","example":["fal-ai/flux/dev"]},"required":false,"description":"Filter by one or more fal endpoints to scope request history. Accepts comma-separated or repeated values (1-50 IDs).","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Deprecated: use `endpoint_id`. Single-endpoint filter retained for backward compatibility. If both are provided, `endpoint_id` wins.","deprecated":true,"example":"fal-ai/flux/dev"},"required":false,"description":"Deprecated: use `endpoint_id`. Single-endpoint filter retained for backward compatibility. If both are provided, `endpoint_id` wins.","name":"endpoint","in":"query"},{"schema":{"type":"boolean","description":"Exclude requests made via API keys (only show playground/UI requests). Mutually exclusive with only_api_requests.","example":true},"required":false,"description":"Exclude requests made via API keys (only show playground/UI requests). Mutually exclusive with only_api_requests.","name":"exclude_api_requests","in":"query"},{"schema":{"type":"boolean","description":"Only include requests made via API keys. Mutually exclusive with exclude_api_requests.","example":true},"required":false,"description":"Only include requests made via API keys. Mutually exclusive with exclude_api_requests.","name":"only_api_requests","in":"query"},{"schema":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Minimum similarity score (0-1) for semantic search results. Only applies when query or image_url is provided.","example":0.3},"required":false,"description":"Minimum similarity score (0-1) for semantic search results. Only applies when query or image_url is provided.","name":"min_similarity","in":"query"}],"responses":{"200":{"description":"Successfully retrieved request search results","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"results":{"type":"array","items":{"type":"object","properties":{"request_id":{"type":"string","format":"uuid","description":"Unique identifier for the request","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"endpoint_id":{"type":"string","description":"Endpoint that was executed for this request","example":"fal-ai/flux/dev"},"started_at":{"type":"string","format":"date-time","description":"Time when request processing started","example":"2025-01-01T00:00:05Z"},"sent_at":{"type":"string","format":"date-time","description":"Time when request was sent to the backend","example":"2025-01-01T00:00:01Z"},"ended_at":{"type":["string","null"],"format":"date-time","description":"Time when request finished processing","example":"2025-01-01T00:00:08Z"},"status_code":{"type":["integer","null"],"description":"HTTP status code returned by the request","example":200},"duration":{"type":["number","null"],"description":"Total request duration in seconds","example":7.8},"json_input":{"description":"Input payload for the request"},"json_output":{"description":"Output payload for the request"},"similarity":{"type":"number","minimum":0,"maximum":1,"description":"Similarity score (0-1) when semantic search is used","example":0.87}},"required":["request_id","endpoint_id","started_at","sent_at"],"description":"Request search result"},"description":"Array of matching request results, ordered by relevance or recency"}},"required":["next_cursor","has_more","results"],"description":"Request search results with pagination"},"example":{"results":[{"request_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","endpoint_id":"fal-ai/flux/dev","started_at":"2025-01-15T11:59:55Z","sent_at":"2025-01-15T11:59:50Z","ended_at":"2025-01-15T12:00:00Z","status_code":200,"duration":5,"similarity":0.95}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/workflows":{"get":{"operationId":"listWorkflows","summary":"List user workflows","x-mint":{"href":"/platform-apis/v1/workflows","metadata":{"sidebarTitle":"List User Workflows"}},"description":"\nList workflows for the authenticated user with optional search and filtering.\n\n**Features:**\n- Paginated results with cursor-based pagination\n- Search by workflow name or title\n- Filter by model endpoints used in the workflow\n\n**Authentication:** Required. Returns only workflows owned by the authenticated user.\n\n**Common Use Cases:**\n- Display user's workflow library\n- Search for specific workflows\n- Find workflows using particular models\n ","tags":["Workflows"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"type":"string","description":"Search by workflow name or title","example":"image generation"},"required":false,"description":"Search by workflow name or title","name":"search","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by model endpoint IDs used in the workflow. Can be a single value or comma-separated values.","example":["fal-ai/flux/dev"]},"required":false,"description":"Filter by model endpoint IDs used in the workflow. Can be a single value or comma-separated values.","name":"used_endpoint_ids","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Successfully retrieved workflows","content":{"application/json":{"schema":{"type":"object","properties":{"workflows":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Unique workflow name/slug within the user's namespace","example":"my-image-workflow"},"title":{"type":"string","description":"Human-readable workflow title","example":"My Image Generation Workflow"},"user_nickname":{"type":"string","description":"Display name/username of the owner","example":"johndoe"},"created_at":{"type":"string","description":"ISO8601 timestamp of workflow creation","example":"2024-01-15T10:30:00Z"},"thumbnail_url":{"type":"string","description":"URL to the workflow thumbnail image","example":"https://fal.ai/workflows/thumb_abc123.png"},"description":{"type":"string","description":"Brief description of what the workflow does","example":"Generate high-quality images using FLUX model"},"tags":{"type":"array","items":{"type":"string","example":"image-generation"},"description":"Tags associated with the workflow","example":["image-generation","ai","flux"]},"endpoint_ids":{"type":"array","items":{"type":"string","example":"fal-ai/flux/dev"},"description":"List of model endpoint IDs used in this workflow","example":["fal-ai/flux/dev","fal-ai/face-swap"]}},"required":["name","title","user_nickname","created_at","tags","endpoint_ids"],"description":"Workflow information"},"description":"Array of workflow items","example":[{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2024-01-15T10:30:00Z","thumbnail_url":"https://fal.ai/workflows/thumb_abc123.png","description":"Generate high-quality images using FLUX model","tags":["image-generation","ai","flux"],"endpoint_ids":["fal-ai/flux/dev","fal-ai/face-swap"]}]},"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages","example":"eyJvZmZzZXQiOjEwfQ=="},"has_more":{"type":"boolean","description":"Whether more results are available","example":true},"total":{"type":"integer","description":"Total number of workflows matching the query","example":42}},"required":["workflows","next_cursor","has_more"],"description":"Response containing workflow data with pagination support"},"example":{"workflows":[{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2025-01-15T12:00:00Z","thumbnail_url":"https://fal.media/files/example.jpg","description":"A workflow for generating images","tags":["image","generation"],"endpoint_ids":["fal-ai/flux/dev"]}],"next_cursor":null,"has_more":false,"total":1}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"post":{"operationId":"createWorkflow","summary":"Create a workflow","x-mint":{"href":"/platform-apis/v1/workflows/create"},"description":"\nCreate a new workflow owned by the authenticated user.\n\n**Authentication:** Required.\n\n**Common Use Cases:**\n- Save a newly built workflow\n- Programmatically provision workflows\n\n**Note:** Workflow names must be unique within your namespace. Creating a\nworkflow with a name you already use returns a 400 validation error.\n ","tags":["Workflows"],"security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":128,"pattern":"^[a-zA-Z0-9_-]+$","description":"Unique workflow name/slug within the user's namespace","example":"my-image-workflow"},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Human-readable workflow title","example":"My Image Generation Workflow"},"contents":{"type":"object","properties":{"name":{"type":"string","description":"Internal name of the workflow definition","example":"my-image-workflow"},"version":{"type":"string","description":"Workflow definition format version","example":"1.0.0"},"nodes":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}},"description":"Workflow nodes keyed by node id"},"output":{"type":"object","additionalProperties":{"type":"string"},"description":"Output field mappings keyed by output name"},"schema":{"type":"object","properties":{"input":{"type":"object","additionalProperties":{},"description":"Input fields schema"},"output":{"type":"object","additionalProperties":{},"description":"Output fields schema"}},"required":["input","output"],"description":"Input/output schema for the workflow"},"metadata":{"type":"object","additionalProperties":{},"description":"Optional workflow metadata"}},"required":["name","version","nodes","output","schema"],"description":"The workflow definition/configuration object","example":{"name":"my-image-workflow","version":"1.0.0","nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"run","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}}},"output":{"image":"$node_a1b2c3.images.0.url"},"schema":{"input":{"prompt":{"type":"string"}},"output":{"image":{"type":"string"}}}}},"is_public":{"type":"boolean","default":false,"description":"Whether the workflow is publicly visible","example":false}},"required":["name","title","contents"],"description":"Request body for creating a new workflow"},"example":{"name":"my-image-workflow","title":"My Image Generation Workflow","is_public":false,"contents":{"name":"my-image-workflow","version":"1.0.0","nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"run","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}}},"output":{"image":"$node_a1b2c3.images.0.url"},"schema":{"input":{"prompt":{"type":"string"}},"output":{"image":{"type":"string"}}}}}}}},"responses":{"201":{"description":"Successfully created workflow","content":{"application/json":{"schema":{"type":"object","properties":{"workflow":{"type":"object","properties":{"name":{"type":"string","description":"Unique workflow name/slug within the user's namespace","example":"my-image-workflow"},"title":{"type":"string","description":"Human-readable workflow title","example":"My Image Generation Workflow"},"user_nickname":{"type":"string","description":"Display name/username of the owner","example":"johndoe"},"created_at":{"type":"string","description":"ISO8601 timestamp of workflow creation","example":"2024-01-15T10:30:00Z"},"is_public":{"type":"boolean","description":"Whether the workflow is publicly visible","example":true},"contents":{"type":"object","additionalProperties":{},"description":"The workflow definition/configuration object","example":{"nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"model","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}},"output":{"id":"output","type":"output","depends":["node_a1b2c3"],"fields":{"image":"$node_a1b2c3.images.0.url"},"metadata":{"position":{"x":600,"y":100}}}}}}},"required":["name","title","user_nickname","created_at","is_public","contents"],"description":"The workflow details","example":{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2024-01-15T10:30:00Z","is_public":true,"contents":{"nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"model","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}},"output":{"id":"output","type":"output","depends":["node_a1b2c3"],"fields":{"image":"$node_a1b2c3.images.0.url"},"metadata":{"position":{"x":600,"y":100}}}}}}}},"required":["workflow"],"description":"Response containing a single workflow's details"},"example":{"workflow":{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2025-01-15T12:00:00Z","is_public":false,"contents":{"name":"my-image-workflow","version":"1.0.0","nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"run","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}}},"output":{"image":"$node_a1b2c3.images.0.url"},"schema":{"input":{"prompt":{"type":"string"}},"output":{"image":{"type":"string"}}}}}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/workflows/{username}/{workflow_name}":{"get":{"operationId":"getWorkflow","summary":"Get workflow details","x-mint":{"href":"/platform-apis/v1/workflows/get"},"description":"\nGet detailed information about a specific workflow, including its full contents/definition.\n\n**Authentication:** Required.\n\n**Common Use Cases:**\n- Load a workflow for editing\n- View workflow configuration\n- Export workflow definition\n ","tags":["Workflows"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","maxLength":128,"pattern":"^[a-zA-Z0-9_-]+$","description":"The username of the workflow owner","example":"johndoe"},"required":true,"description":"The username of the workflow owner","name":"username","in":"path"},{"schema":{"type":"string","maxLength":128,"pattern":"^[a-zA-Z0-9_-]+$","description":"The workflow name/slug","example":"my-image-workflow"},"required":true,"description":"The workflow name/slug","name":"workflow_name","in":"path"}],"responses":{"200":{"description":"Successfully retrieved workflow details","content":{"application/json":{"schema":{"type":"object","properties":{"workflow":{"type":"object","properties":{"name":{"type":"string","description":"Unique workflow name/slug within the user's namespace","example":"my-image-workflow"},"title":{"type":"string","description":"Human-readable workflow title","example":"My Image Generation Workflow"},"user_nickname":{"type":"string","description":"Display name/username of the owner","example":"johndoe"},"created_at":{"type":"string","description":"ISO8601 timestamp of workflow creation","example":"2024-01-15T10:30:00Z"},"is_public":{"type":"boolean","description":"Whether the workflow is publicly visible","example":true},"contents":{"type":"object","additionalProperties":{},"description":"The workflow definition/configuration object","example":{"nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"model","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}},"output":{"id":"output","type":"output","depends":["node_a1b2c3"],"fields":{"image":"$node_a1b2c3.images.0.url"},"metadata":{"position":{"x":600,"y":100}}}}}}},"required":["name","title","user_nickname","created_at","is_public","contents"],"description":"The workflow details","example":{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2024-01-15T10:30:00Z","is_public":true,"contents":{"nodes":{"node_a1b2c3":{"id":"node_a1b2c3","type":"model","app":"fal-ai/flux/dev","depends":[],"input":{"prompt":"$input.prompt"},"metadata":{"position":{"x":300,"y":100}}},"output":{"id":"output","type":"output","depends":["node_a1b2c3"],"fields":{"image":"$node_a1b2c3.images.0.url"},"metadata":{"position":{"x":600,"y":100}}}}}}}},"required":["workflow"],"description":"Response containing a single workflow's details"},"example":{"workflow":{"name":"my-image-workflow","title":"My Image Generation Workflow","user_nickname":"johndoe","created_at":"2025-01-15T12:00:00Z","is_public":false,"contents":{"nodes":[],"edges":[]}}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/assets":{"get":{"operationId":"listAssets","summary":"Browse assets","x-mint":{"href":"/platform-apis/v1/assets","metadata":{"sidebarTitle":"Browse Assets"}},"description":"Browse and semantically search fal Assets across all media, uploads, favorites, collections, tags, and character references.","tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"type":"string","description":"Text query for hybrid semantic search","example":"cinematic portrait"},"required":false,"description":"Text query for hybrid semantic search","name":"q","in":"query"},{"schema":{"type":"string","format":"uri","description":"fal-hosted image URL to use for semantic image search","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"required":false,"description":"fal-hosted image URL to use for semantic image search","name":"search_image_url","in":"query"},{"schema":{"type":"string","format":"uri","description":"fal-hosted video URL to use for semantic video search","example":"https://fal.media/files/example.mp4"},"required":false,"description":"fal-hosted video URL to use for semantic video search","name":"search_video_url","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"default":[],"description":"Filter by one or more media types","example":["image","video"]},"required":false,"description":"Filter by one or more media types","name":"media_type","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string","enum":["upload","response","request"],"description":"Indexed asset source"},"default":[],"description":"Filter by one or more indexed sources","example":["upload","response"]},"required":false,"description":"Filter by one or more indexed sources","name":"source","in":"query"},{"schema":{"type":"string","enum":["all-media","uploads","favorites","generated"],"default":"all-media","description":"Asset library section to browse","example":"all-media"},"required":false,"description":"Asset library section to browse","name":"section","in":"query"},{"schema":{"type":"string","description":"Collection scope to browse","example":"d8b6elcregj72v34jr8g"},"required":false,"description":"Collection scope to browse","name":"collection_id","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string"},"default":[],"description":"Character identifiers to use as @mention semantic filters","example":["alice"]},"required":false,"description":"Character identifiers to use as @mention semantic filters","name":"character_identifier","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string"},"default":[],"description":"Tag IDs to filter by","example":["43ce3411-1a25-4d14-875e-3562d341b090"]},"required":false,"description":"Tag IDs to filter by","name":"tag_id","in":"query"},{"schema":{"type":"string","enum":["any","all"],"default":"any","description":"Whether tag filters match any tag or all tags","example":"any"},"required":false,"description":"Whether tag filters match any tag or all tags","name":"tag_mode","in":"query"}],"responses":{"200":{"description":"Successfully browsed assets","content":{"application/json":{"schema":{"type":"object","properties":{"assets":{"type":"array","items":{"type":"object","properties":{"vector_id":{"type":"string","description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"request_id":{"type":["string","null"],"description":"Request ID","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"url":{"type":["string","null"],"description":"Media URL","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"type":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"title":{"type":"string","description":"Display title","example":"Portrait"},"endpoint":{"type":["string","null"],"description":"Model endpoint that produced the asset","example":"fal-ai/flux/dev"},"created_at":{"type":["string","null"],"description":"Asset creation time","example":"2026-05-23T20:00:00.000Z"},"source":{"type":["string","null"],"description":"Asset source","example":"upload"},"prompt":{"type":["string","null"],"description":"Saved prompt or description","example":"cinematic portrait"},"width":{"type":["number","null"],"description":"Width in pixels","example":1024},"height":{"type":["number","null"],"description":"Height in pixels","example":1024},"content_type":{"type":["string","null"],"description":"Media content type","example":"image/png"},"is_favorited":{"type":"boolean","description":"Whether the asset is favorited","example":false},"collection_ids":{"type":"array","items":{"type":"string"},"description":"Collections containing this asset","example":["d8b6elcregj72v34jr8g"]},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Assigned tags"},"similarity":{"type":["number","null"],"description":"Semantic similarity score when applicable","example":0.92}},"required":["vector_id","request_id","url","type","title","endpoint","created_at","source","prompt","width","height","content_type","is_favorited","collection_ids","tags","similarity"],"description":"Asset item"},"description":"Asset results"},"next_cursor":{"type":["string","null"],"description":"Cursor for the next page"},"has_more":{"type":"boolean","description":"Whether more results are available"},"total_count":{"type":["number","null"],"description":"Exact total when available; null when unavailable"}},"required":["assets","next_cursor","has_more","total_count"],"description":"Paginated asset browse response"},"example":{"assets":[{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc","request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","type":"image","title":"Cinematic portrait","endpoint":"fal-ai/flux/dev","created_at":"2026-05-23T20:00:00.000Z","source":"upload","prompt":"cinematic portrait of a character","width":1024,"height":1024,"content_type":"image/png","is_favorited":false,"collection_ids":["d8b6elcregj72v34jr8g"],"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}],"similarity":0.92}],"next_cursor":null,"has_more":false,"total_count":1}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections":{"get":{"operationId":"listAssetCollections","summary":"List asset collections","description":"List asset collections for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections","metadata":{"sidebarTitle":"List Asset Collections"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of collections to return","example":50},"required":false,"description":"Maximum number of collections to return","name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0,"description":"Number of collections to skip","example":0},"required":false,"description":"Number of collections to skip","name":"offset","in":"query"}],"responses":{"200":{"description":"Successfully listed collections","content":{"application/json":{"schema":{"type":"object","properties":{"collections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"]},"description":"Asset collections visible to the authenticated user"}},"required":["collections"]},"example":{"collections":[{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":1}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"post":{"operationId":"createAssetCollection","summary":"Create asset collection","description":"Create asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/create","metadata":{"sidebarTitle":"Create Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Collection display name"},"description":{"type":["string","null"],"description":"Optional collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"format":"uri","description":"Optional fal-hosted cover image URL for the collection"},"parent_collection_id":{"type":["string","null"],"minLength":1,"description":"Optional parent collection ID to nest this collection under (manual collections only). Omit or null to create a top-level collection."},"filters":{"description":"Assets filter DSL"}},"required":["name"]},"example":{"name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","filters":null}}}},"responses":{"201":{"description":"Collection created","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}":{"get":{"operationId":"getAssetCollection","summary":"Get asset collection","description":"Get asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/get","metadata":{"sidebarTitle":"Get Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"}],"responses":{"200":{"description":"Collection details","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"patch":{"operationId":"updateAssetCollection","summary":"Update asset collection","description":"Update asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/update","metadata":{"sidebarTitle":"Update Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Collection display name"},"description":{"type":["string","null"],"description":"Optional collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"format":"uri","description":"Optional fal-hosted cover image URL for the collection"},"filters":{"description":"Assets filter DSL"}}},"example":{"name":"Updated campaign concepts","description":"Updated reusable campaign imagery"}}}},"responses":{"200":{"description":"Collection updated","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"delete":{"operationId":"deleteAssetCollection","summary":"Delete asset collection","description":"Delete asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/delete","metadata":{"sidebarTitle":"Delete Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"204":{"description":"Collection deleted"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}/hierarchy":{"get":{"operationId":"getAssetCollectionHierarchy","summary":"Get asset collection hierarchy","description":"Get the nested subtree rooted at an asset collection, plus its ancestor collections ordered from the top level down to its direct parent.","x-mint":{"href":"/platform-apis/v1/assets/collections/hierarchy","metadata":{"sidebarTitle":"Get Asset Collection Hierarchy"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"}],"responses":{"200":{"description":"Collection hierarchy","content":{"application/json":{"schema":{"type":"object","properties":{"hierarchy":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"children":{"type":"array","items":{},"description":"Child collections (always empty at the maximum nesting depth)"}},"required":["id","name","type","children"]},"description":"Child collections"}},"required":["id","name","type","children"]},"description":"Child collections"}},"required":["id","name","type","children"]},"description":"Child collections"}},"required":["id","name","type","children"]},"description":"Child collections"}},"required":["id","name","type","children"],"description":"Subtree rooted at the requested collection"},"ancestors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"name":{"type":"string","description":"Collection display name","example":"Campaign concepts"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"}},"required":["id","name","type"],"description":"Ancestor collection"},"description":"Ancestor collections ordered from the top level down to the direct parent"}},"required":["hierarchy","ancestors"]},"example":{"hierarchy":{"id":"d8b6elcregj72v34jr8g","name":"Campaign concepts","type":"manual","children":[{"id":"d8b6em4regj72v34jr90","name":"Drafts","type":"manual","children":[]}]},"ancestors":[{"id":"d7tatpsregjaga2cf3d0","name":"Brand assets","type":"manual"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}/favorite":{"post":{"operationId":"favoriteAssetCollection","summary":"Favorite asset collection","description":"Favorite an asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/favorite","metadata":{"sidebarTitle":"Favorite Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Collection favorited","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":true,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}/unfavorite":{"post":{"operationId":"unfavoriteAssetCollection","summary":"Unfavorite asset collection","description":"Unfavorite an asset collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/unfavorite","metadata":{"sidebarTitle":"Unfavorite Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Collection unfavorited","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":null,"is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}/move":{"post":{"operationId":"moveAssetCollection","summary":"Move asset collection","description":"Move a manual asset collection under another collection, or to the top level. Only manual collections can be moved or act as folders; nesting is limited to 5 levels deep and cannot create a cycle.","x-mint":{"href":"/platform-apis/v1/assets/collections/move","metadata":{"sidebarTitle":"Move Asset Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"parent_collection_id":{"type":["string","null"],"minLength":1,"description":"Parent collection ID to move this collection under, or null to move it to the top level. Must be a manual collection; nesting is limited to 5 levels and cannot create a cycle."}},"required":["parent_collection_id"]},"example":{"parent_collection_id":"d7tatpsregjaga2cf3d0"}}}},"responses":{"200":{"description":"Collection moved","content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["manual","smart","character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"filters":{"description":"Filter DSL backing smart and character collections"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at"],"description":"Asset collection"}},"required":["collection"]},"example":{"collection":{"id":"d8b6elcregj72v34jr8g","type":"manual","name":"Campaign concepts","description":"Reusable campaign imagery","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":null,"parent_collection_id":"d7tatpsregjaga2cf3d0","is_favorited":false,"filters":null,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":1}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/collections/{collection_id}/assets":{"get":{"operationId":"listAssetCollectionAssets","summary":"Browse assets in a collection","description":"Browse assets in a collection for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/collections/assets","metadata":{"sidebarTitle":"Browse Collection Assets"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"type":"string","description":"Text query for hybrid semantic search","example":"cinematic portrait"},"required":false,"description":"Text query for hybrid semantic search","name":"q","in":"query"},{"schema":{"type":"string","format":"uri","description":"fal-hosted image URL to use for semantic image search","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"required":false,"description":"fal-hosted image URL to use for semantic image search","name":"search_image_url","in":"query"},{"schema":{"type":"string","format":"uri","description":"fal-hosted video URL to use for semantic video search","example":"https://fal.media/files/example.mp4"},"required":false,"description":"fal-hosted video URL to use for semantic video search","name":"search_video_url","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"default":[],"description":"Filter by one or more media types","example":["image","video"]},"required":false,"description":"Filter by one or more media types","name":"media_type","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string","enum":["upload","response","request"],"description":"Indexed asset source"},"default":[],"description":"Filter by one or more indexed sources","example":["upload","response"]},"required":false,"description":"Filter by one or more indexed sources","name":"source","in":"query"},{"schema":{"type":"string","enum":["all-media","uploads","favorites","generated"],"default":"all-media","description":"Asset library section to browse","example":"all-media"},"required":false,"description":"Asset library section to browse","name":"section","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string"},"default":[],"description":"Character identifiers to use as @mention semantic filters","example":["alice"]},"required":false,"description":"Character identifiers to use as @mention semantic filters","name":"character_identifier","in":"query"},{"schema":{"type":["array","null"],"items":{"type":"string"},"default":[],"description":"Tag IDs to filter by","example":["43ce3411-1a25-4d14-875e-3562d341b090"]},"required":false,"description":"Tag IDs to filter by","name":"tag_id","in":"query"},{"schema":{"type":"string","enum":["any","all"],"default":"any","description":"Whether tag filters match any tag or all tags","example":"any"},"required":false,"description":"Whether tag filters match any tag or all tags","name":"tag_mode","in":"query"}],"responses":{"200":{"description":"Collection assets","content":{"application/json":{"schema":{"type":"object","properties":{"assets":{"type":"array","items":{"type":"object","properties":{"vector_id":{"type":"string","description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"request_id":{"type":["string","null"],"description":"Request ID","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"url":{"type":["string","null"],"description":"Media URL","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"type":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"title":{"type":"string","description":"Display title","example":"Portrait"},"endpoint":{"type":["string","null"],"description":"Model endpoint that produced the asset","example":"fal-ai/flux/dev"},"created_at":{"type":["string","null"],"description":"Asset creation time","example":"2026-05-23T20:00:00.000Z"},"source":{"type":["string","null"],"description":"Asset source","example":"upload"},"prompt":{"type":["string","null"],"description":"Saved prompt or description","example":"cinematic portrait"},"width":{"type":["number","null"],"description":"Width in pixels","example":1024},"height":{"type":["number","null"],"description":"Height in pixels","example":1024},"content_type":{"type":["string","null"],"description":"Media content type","example":"image/png"},"is_favorited":{"type":"boolean","description":"Whether the asset is favorited","example":false},"collection_ids":{"type":"array","items":{"type":"string"},"description":"Collections containing this asset","example":["d8b6elcregj72v34jr8g"]},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Assigned tags"},"similarity":{"type":["number","null"],"description":"Semantic similarity score when applicable","example":0.92}},"required":["vector_id","request_id","url","type","title","endpoint","created_at","source","prompt","width","height","content_type","is_favorited","collection_ids","tags","similarity"],"description":"Asset item"},"description":"Asset results"},"next_cursor":{"type":["string","null"],"description":"Cursor for the next page"},"has_more":{"type":"boolean","description":"Whether more results are available"},"total_count":{"type":["number","null"],"description":"Exact total when available; null when unavailable"}},"required":["assets","next_cursor","has_more","total_count"],"description":"Paginated asset browse response"},"example":{"assets":[{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc","request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","type":"image","title":"Cinematic portrait","endpoint":"fal-ai/flux/dev","created_at":"2026-05-23T20:00:00.000Z","source":"upload","prompt":"cinematic portrait of a character","width":1024,"height":1024,"content_type":"image/png","is_favorited":false,"collection_ids":["d8b6elcregj72v34jr8g"],"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}],"similarity":0.92}],"next_cursor":null,"has_more":false,"total_count":1}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"post":{"operationId":"addAssetToCollection","summary":"Add asset to collection","description":"Add an asset to a manual or character collection. Provide a request ID or vector ID; unresolved references are materialized before local collection state is added. For character collections, the asset is added by applying the character tag.","x-mint":{"href":"/platform-apis/v1/assets/collections/assets/add","metadata":{"sidebarTitle":"Add Asset to Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"request_id":"019e6d0a-e5be-7b82-b329-35ae64296902"}}}},"responses":{"200":{"description":"Asset added","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the operation succeeded","example":true}},"required":["success"]},"example":{"success":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"delete":{"operationId":"removeAssetFromCollection","summary":"Remove asset from collection","description":"Remove an asset from a manual or character collection by request ID or vector ID.","x-mint":{"href":"/platform-apis/v1/assets/collections/assets/remove","metadata":{"sidebarTitle":"Remove Asset from Collection"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Collection ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Collection ID","name":"collection_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"}}}},"responses":{"204":{"description":"Asset removed"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/characters":{"get":{"operationId":"listAssetCharacters","summary":"List asset characters","description":"List asset characters for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/characters","metadata":{"sidebarTitle":"List Asset Characters"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of collections to return","example":50},"required":false,"description":"Maximum number of collections to return","name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0,"description":"Number of collections to skip","example":0},"required":false,"description":"Number of collections to skip","name":"offset","in":"query"}],"responses":{"200":{"description":"Characters","content":{"application/json":{"schema":{"type":"object","properties":{"characters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"},"description":"Asset characters visible to the authenticated user"}},"required":["characters"]},"example":{"characters":[{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":false,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"post":{"operationId":"createAssetCharacter","summary":"Create asset character","description":"Create an asset character for the authenticated user's fal Assets library. Prefer vector IDs or request IDs in reference_images for existing fal-generated assets; use fal-hosted image URLs only for standalone images. Unresolved ID references are materialized before character state is added.","x-mint":{"href":"/platform-apis/v1/assets/characters/create","metadata":{"sidebarTitle":"Create Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Character display name"},"identifier":{"type":["string","null"],"maxLength":64,"description":"Optional @mention identifier for the character"},"description":{"type":"string","minLength":1,"maxLength":2000,"description":"Text description used for character semantic matching"},"reference_images":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":20,"description":"Reference images for the character. Prefer vector IDs or request IDs for existing fal-generated assets. Use fal-hosted image URLs only for standalone images."},"cover_image_url":{"type":["string","null"],"format":"uri","description":"Optional fal-hosted cover image URL for the character"}},"required":["name","description","reference_images"]},"example":{"name":"Alice","identifier":"alice","description":"A character with red hair and a blue jacket","reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","019e6d0a-e5be-7b82-b329-35ae64296902"],"cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"}}}},"responses":{"201":{"description":"Character created","content":{"application/json":{"schema":{"type":"object","properties":{"character":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"}},"required":["character"]},"example":{"character":{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":false,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/characters/{character_id}":{"patch":{"operationId":"updateAssetCharacter","summary":"Update asset character","description":"Update an asset character for the authenticated user's fal Assets library. Prefer vector IDs or request IDs in reference_images for existing fal-generated assets; use fal-hosted image URLs only for standalone images. Unresolved ID references are materialized before character state is added.","x-mint":{"href":"/platform-apis/v1/assets/characters/update","metadata":{"sidebarTitle":"Update Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Character collection ID","example":"d7tatpsregjaga2cf3d0"},"required":true,"description":"Character collection ID","name":"character_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Character display name"},"description":{"type":"string","minLength":1,"maxLength":2000,"description":"Text description used for character semantic matching"},"reference_images":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":20,"description":"Reference images for the character. Prefer vector IDs or request IDs for existing fal-generated assets. Use fal-hosted image URLs only for standalone images."},"cover_image_url":{"type":["string","null"],"format":"uri","description":"Optional fal-hosted cover image URL for the character"}}},"example":{"name":"Alice","reference_images":["019e6d0a-e5be-7b82-b329-35ae64296902"]}}}},"responses":{"200":{"description":"Character updated","content":{"application/json":{"schema":{"type":"object","properties":{"character":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"}},"required":["character"]},"example":{"character":{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":false,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"get":{"operationId":"getAssetCharacter","summary":"Get asset character","description":"Get asset character for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/characters/get","metadata":{"sidebarTitle":"Get Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Character collection ID","example":"d7tatpsregjaga2cf3d0"},"required":true,"description":"Character collection ID","name":"character_id","in":"path"}],"responses":{"200":{"description":"Character details","content":{"application/json":{"schema":{"type":"object","properties":{"character":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"}},"required":["character"]},"example":{"character":{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":false,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"delete":{"operationId":"deleteAssetCharacter","summary":"Delete asset character","description":"Delete asset character for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/characters/delete","metadata":{"sidebarTitle":"Delete Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Character collection ID","example":"d7tatpsregjaga2cf3d0"},"required":true,"description":"Character collection ID","name":"character_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"204":{"description":"Character deleted"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/characters/{character_id}/favorite":{"post":{"operationId":"favoriteAssetCharacter","summary":"Favorite asset character","description":"Favorite an asset character for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/characters/favorite","metadata":{"sidebarTitle":"Favorite Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Character collection ID","example":"d7tatpsregjaga2cf3d0"},"required":true,"description":"Character collection ID","name":"character_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Character favorited","content":{"application/json":{"schema":{"type":"object","properties":{"character":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"}},"required":["character"]},"example":{"character":{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":true,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/characters/{character_id}/unfavorite":{"post":{"operationId":"unfavoriteAssetCharacter","summary":"Unfavorite asset character","description":"Unfavorite an asset character for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/characters/unfavorite","metadata":{"sidebarTitle":"Unfavorite Asset Character"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Character collection ID","example":"d7tatpsregjaga2cf3d0"},"required":true,"description":"Character collection ID","name":"character_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Character unfavorited","content":{"application/json":{"schema":{"type":"object","properties":{"character":{"type":"object","properties":{"id":{"type":"string","description":"Collection ID"},"type":{"type":"string","enum":["character"],"description":"Collection type"},"name":{"type":"string","description":"Collection display name"},"description":{"type":["string","null"],"description":"Collection description"},"icon":{"type":["string","null"],"description":"Optional collection icon"},"color":{"type":["string","null"],"description":"Optional collection color"},"cover_image_url":{"type":["string","null"],"description":"Optional cover image URL for the collection"},"character_identifier":{"type":["string","null"],"description":"Character @mention identifier for character collections"},"parent_collection_id":{"type":["string","null"],"description":"Parent collection ID for a nested (manual) collection; null when top-level"},"is_favorited":{"type":"boolean","description":"Whether the collection is favorited"},"asset_count":{"type":["number","null"],"description":"Exact asset count when available; null for smart/character collections"},"created_at":{"type":"string","description":"Collection creation time"},"updated_at":{"type":"string","description":"Collection update time"},"reference_images":{"type":"array","items":{"type":"string"},"description":"Reference images used for character matching"}},"required":["id","type","name","description","icon","color","cover_image_url","character_identifier","parent_collection_id","is_favorited","created_at","updated_at","reference_images"],"description":"Asset character"}},"required":["character"]},"example":{"character":{"id":"d7tatpsregjaga2cf3d0","type":"character","name":"Alice","description":"A character with red hair and a blue jacket","icon":"folder","color":"blue","cover_image_url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","character_identifier":"alice","parent_collection_id":null,"is_favorited":false,"created_at":"2026-05-23T20:00:00.000Z","updated_at":"2026-05-23T20:00:00.000Z","asset_count":null,"reference_images":["https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/tags":{"get":{"operationId":"listAssetTags","summary":"List asset tags","description":"List asset tags for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/tags","metadata":{"sidebarTitle":"List Asset Tags"}},"tags":["Assets"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Tags","content":{"application/json":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Asset tags"}},"required":["tags"]},"example":{"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"post":{"operationId":"createAssetTag","summary":"Create asset tag","description":"Create asset tag for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/tags/create","metadata":{"sidebarTitle":"Create Asset Tag"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50,"description":"Tag name"}},"required":["name"]},"example":{"name":"moodboard"}}}},"responses":{"201":{"description":"Tag created","content":{"application/json":{"schema":{"type":"object","properties":{"tag":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"}},"required":["tag"]},"example":{"tag":{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"put":{"operationId":"setAssetTagsForAsset","summary":"Set tags for an asset","description":"Set tags for an asset. Provide a request ID or vector ID; unresolved references are materialized before tag state is added.","x-mint":{"href":"/platform-apis/v1/assets/tags/set-for-asset","metadata":{"sidebarTitle":"Set Asset Tags"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"},"tag_ids":{"type":"array","items":{"type":"string"},"description":"Full replacement set of tag IDs"}},"required":["tag_ids"]},"example":{"request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","tag_ids":["43ce3411-1a25-4d14-875e-3562d341b090"]}}}},"responses":{"200":{"description":"Asset tags","content":{"application/json":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Asset tags"}},"required":["tags"]},"example":{"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/tags/{tag_id}":{"patch":{"operationId":"updateAssetTag","summary":"Update asset tag","description":"Update asset tag for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/tags/update","metadata":{"sidebarTitle":"Update Asset Tag"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"required":true,"description":"Tag ID","name":"tag_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50,"description":"Tag name"}}},"example":{"name":"campaign"}}}},"responses":{"200":{"description":"Tag updated","content":{"application/json":{"schema":{"type":"object","properties":{"tag":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"}},"required":["tag"]},"example":{"tag":{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"delete":{"operationId":"deleteAssetTag","summary":"Delete asset tag","description":"Delete asset tag for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/tags/delete","metadata":{"sidebarTitle":"Delete Asset Tag"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"required":true,"description":"Tag ID","name":"tag_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"204":{"description":"Tag deleted"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/uploads":{"post":{"operationId":"uploadAsset","summary":"Upload asset","description":"Upload asset for the authenticated user's fal Assets library.","x-mint":{"href":"/platform-apis/v1/assets/uploads","metadata":{"sidebarTitle":"Upload Asset"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"fal-hosted media URL to ingest into the asset library"},"type":{"type":"string","enum":["image","video","audio","3d"],"description":"Media type for the uploaded asset"},"prompt":{"type":["string","null"],"minLength":1,"maxLength":2000,"description":"Optional caller-provided caption or description to index with the uploaded asset"},"collection_id":{"type":["string","null"],"description":"Optional manual collection ID to add the uploaded asset to"},"favorite":{"type":"boolean","default":false,"description":"Whether to favorite the uploaded asset immediately"},"tag_ids":{"type":"array","items":{"type":"string"},"default":[],"description":"Tag IDs to assign to the uploaded asset"}},"required":["url","type"]},"example":{"url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","type":"image","prompt":"Cinematic portrait of a character","collection_id":"d8b6elcregj72v34jr8g","favorite":true,"tag_ids":["43ce3411-1a25-4d14-875e-3562d341b090"]}}}},"responses":{"201":{"description":"Upload ingested","content":{"application/json":{"schema":{"type":"object","properties":{"asset":{"type":"object","properties":{"vector_id":{"type":"string","description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"request_id":{"type":["string","null"],"description":"Request ID","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"url":{"type":["string","null"],"description":"Media URL","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"type":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"title":{"type":"string","description":"Display title","example":"Portrait"},"endpoint":{"type":["string","null"],"description":"Model endpoint that produced the asset","example":"fal-ai/flux/dev"},"created_at":{"type":["string","null"],"description":"Asset creation time","example":"2026-05-23T20:00:00.000Z"},"source":{"type":["string","null"],"description":"Asset source","example":"upload"},"prompt":{"type":["string","null"],"description":"Saved prompt or description","example":"cinematic portrait"},"width":{"type":["number","null"],"description":"Width in pixels","example":1024},"height":{"type":["number","null"],"description":"Height in pixels","example":1024},"content_type":{"type":["string","null"],"description":"Media content type","example":"image/png"},"is_favorited":{"type":"boolean","description":"Whether the asset is favorited","example":false},"collection_ids":{"type":"array","items":{"type":"string"},"description":"Collections containing this asset","example":["d8b6elcregj72v34jr8g"]},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Assigned tags"},"similarity":{"type":["number","null"],"description":"Semantic similarity score when applicable","example":0.92}},"required":["vector_id","request_id","url","type","title","endpoint","created_at","source","prompt","width","height","content_type","is_favorited","collection_ids","tags","similarity"],"description":"Asset details"}},"required":["asset"]},"example":{"asset":{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc","request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","type":"image","title":"Cinematic portrait","endpoint":"fal-ai/flux/dev","created_at":"2026-05-23T20:00:00.000Z","source":"upload","prompt":"cinematic portrait of a character","width":1024,"height":1024,"content_type":"image/png","is_favorited":false,"collection_ids":["d8b6elcregj72v34jr8g"],"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}],"similarity":0.92}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/{vector_id}":{"get":{"operationId":"getAsset","summary":"Get asset","description":"Get an asset document by vector ID from the authenticated user's fal Assets library. The vector may exist only in Turbopuffer; in that case the response returns the Turbopuffer document with empty local state.","x-mint":{"href":"/platform-apis/v1/assets/get","metadata":{"sidebarTitle":"Get Asset"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"required":true,"description":"Vector ID","name":"vector_id","in":"path"}],"responses":{"200":{"description":"Asset details","content":{"application/json":{"schema":{"type":"object","properties":{"asset":{"type":"object","properties":{"vector_id":{"type":"string","description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"request_id":{"type":["string","null"],"description":"Request ID","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"url":{"type":["string","null"],"description":"Media URL","example":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png"},"type":{"type":"string","enum":["image","video","audio","3d"],"description":"Asset media type"},"title":{"type":"string","description":"Display title","example":"Portrait"},"endpoint":{"type":["string","null"],"description":"Model endpoint that produced the asset","example":"fal-ai/flux/dev"},"created_at":{"type":["string","null"],"description":"Asset creation time","example":"2026-05-23T20:00:00.000Z"},"source":{"type":["string","null"],"description":"Asset source","example":"upload"},"prompt":{"type":["string","null"],"description":"Saved prompt or description","example":"cinematic portrait"},"width":{"type":["number","null"],"description":"Width in pixels","example":1024},"height":{"type":["number","null"],"description":"Height in pixels","example":1024},"content_type":{"type":["string","null"],"description":"Media content type","example":"image/png"},"is_favorited":{"type":"boolean","description":"Whether the asset is favorited","example":false},"collection_ids":{"type":"array","items":{"type":"string"},"description":"Collections containing this asset","example":["d8b6elcregj72v34jr8g"]},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Assigned tags"},"similarity":{"type":["number","null"],"description":"Semantic similarity score when applicable","example":0.92}},"required":["vector_id","request_id","url","type","title","endpoint","created_at","source","prompt","width","height","content_type","is_favorited","collection_ids","tags","similarity"],"description":"Asset details"}},"required":["asset"]},"example":{"asset":{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc","request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","url":"https://v3b.fal.media/files/b/0a9b4900/PDbTGyzqRh1aijW2WQiY9_opengraph-1%20%281%29.png","type":"image","title":"Cinematic portrait","endpoint":"fal-ai/flux/dev","created_at":"2026-05-23T20:00:00.000Z","source":"upload","prompt":"cinematic portrait of a character","width":1024,"height":1024,"content_type":"image/png","is_favorited":false,"collection_ids":["d8b6elcregj72v34jr8g"],"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}],"similarity":0.92}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/{asset_id}/lineage":{"get":{"operationId":"getAssetLineage","summary":"Get asset lineage","description":"Get the derivation lineage of an asset by asset ID: the inputs it was generated from, the generation requests along the way, and any referenced characters, traversed recursively up to `depth` levels. Deleted or expired ancestors stay in the graph flagged as tombstones; inputs that were never captured appear as external inputs.","x-mint":{"href":"/platform-apis/v1/assets/lineage","metadata":{"sidebarTitle":"Get Asset Lineage"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Asset ID","example":"d8b6elcregj72v34jr8g"},"required":true,"description":"Asset ID","name":"asset_id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":5,"default":5,"description":"Maximum traversal depth (levels of derivation edges)","example":5},"required":false,"description":"Maximum traversal depth (levels of derivation edges)","name":"depth","in":"query"}],"responses":{"200":{"description":"Asset lineage graph","content":{"application/json":{"schema":{"type":"object","properties":{"lineage":{"type":"object","properties":{"focus":{"type":"string","description":"Node ID of the queried asset","example":"asset:0f343b0931126a20f133d67c2b018a3b"},"nodes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["asset"],"description":"Node kind"},"id":{"type":"string","description":"Graph node ID","example":"asset:0f343b0931126a20f133d67c2b018a3b"},"output_key":{"type":"string","description":"Content-addressed asset identity (md5 of the media URL)","example":"0f343b0931126a20f133d67c2b018a3b"},"url":{"type":["string","null"],"description":"Media URL; null when the asset is deleted or expired","example":"https://v3b.fal.media/files/b/0a9b4900/portrait.png"},"type":{"type":"string","enum":["image","video","audio","text","3d"],"description":"Asset media type"},"request_id":{"type":"string","description":"Request that generated this asset","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"asset_id":{"type":["string","null"],"description":"Asset ID (navigable handle); null when the asset is deleted or expired","example":"d8b6elcregj72v34jr8g"},"tombstone":{"type":"boolean","description":"Whether the asset has been deleted or has expired","example":false}},"required":["kind","id","output_key","url","type","request_id","asset_id","tombstone"],"description":"An asset in the user's library"},{"type":"object","properties":{"kind":{"type":"string","enum":["external_input"],"description":"Node kind"},"id":{"type":"string","description":"Graph node ID","example":"external:9e107d9d372bb6826bd81d3542a419d6"},"output_key":{"type":"string","description":"Content-addressed asset identity (md5 of the media URL)","example":"9e107d9d372bb6826bd81d3542a419d6"},"url":{"type":["string","null"],"description":"Source media URL when known","example":"https://fal.media/files/source.png"}},"required":["kind","id","output_key","url"],"description":"An input that is not (or no longer) in the asset library"},{"type":"object","properties":{"kind":{"type":"string","enum":["request"],"description":"Node kind"},"id":{"type":"string","description":"Graph node ID","example":"request:019e6d0a-e5be-7b82-b329-35ae64296902"},"request_id":{"type":"string","description":"Request ID","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"endpoint":{"type":["string","null"],"description":"Model endpoint that ran the request","example":"fal-ai/flux/dev"},"prompt":{"type":["string","null"],"description":"Prompt used by the request when captured","example":"cinematic portrait"},"created_at":{"type":["string","null"],"description":"Request time when captured","example":"2026-05-23T20:00:00.000Z"}},"required":["kind","id","request_id","endpoint","prompt","created_at"],"description":"A generation request in the lineage"},{"type":"object","properties":{"kind":{"type":"string","enum":["entity"],"description":"Node kind"},"id":{"type":"string","description":"Graph node ID","example":"entity:43ce3411-1a25-4d14-875e-3562d341b090"},"entity_id":{"type":"string","description":"Smart entity ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"entity_type":{"type":"string","enum":["character"],"description":"Smart entity type","example":"character"},"name":{"type":["string","null"],"description":"Entity display name; null when the entity is deleted","example":"Alice"},"handle":{"type":["string","null"],"description":"Entity @mention handle; null when the entity is deleted","example":"alice"},"tombstone":{"type":"boolean","description":"Whether the entity has been deleted","example":false}},"required":["kind","id","entity_id","entity_type","name","handle","tombstone"],"description":"A smart entity (e.g. character) referenced by a request"}],"description":"A node in the lineage graph"},"description":"Lineage graph nodes"},"edges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"Source node ID; edges point in generation-flow direction","example":"external:9e107d9d372bb6826bd81d3542a419d6"},"to":{"type":"string","description":"Target node ID","example":"request:019e6d0a-e5be-7b82-b329-35ae64296902"},"kind":{"type":"string","enum":["input_to","generated_by","referenced_entity"],"description":"How one lineage node relates to another"},"role":{"anyOf":[{"type":"string","enum":["source","content_ref","mask","control"],"description":"How an input was used by the consuming generation"},{"type":"null"},{"type":"null"}],"description":"Input role for input_to / referenced_entity edges; null for generated_by"},"entities":{"type":"array","items":{"type":"object","properties":{"entity_id":{"type":"string","description":"Smart entity ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"entity_type":{"type":"string","enum":["character"],"description":"Smart entity type","example":"character"},"name":{"type":["string","null"],"description":"Entity display name; null when the entity is deleted","example":"Alice"},"handle":{"type":["string","null"],"description":"Entity @mention handle; null when the entity is deleted","example":"alice"}},"required":["entity_id","entity_type","name","handle"]},"description":"input_to edges only: smart entities this input is the reference image of and that the request referenced"}},"required":["from","to","kind","role"],"description":"A directed edge in the lineage graph"},"description":"Lineage graph edges"}},"required":["focus","nodes","edges"],"description":"Derivation lineage graph of the asset"}},"required":["lineage"],"description":"Asset lineage response"},"example":{"lineage":{"focus":"asset:0f343b0931126a20f133d67c2b018a3b","nodes":[{"kind":"asset","id":"asset:0f343b0931126a20f133d67c2b018a3b","output_key":"0f343b0931126a20f133d67c2b018a3b","url":"https://v3b.fal.media/files/b/0a9b4900/portrait.png","type":"image","request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","asset_id":"d8b6elcregj72v34jr8g","tombstone":false},{"kind":"request","id":"request:019e6d0a-e5be-7b82-b329-35ae64296902","request_id":"019e6d0a-e5be-7b82-b329-35ae64296902","endpoint":"fal-ai/flux/dev","prompt":"cinematic portrait of a character","created_at":"2026-05-23T20:00:00.000Z"},{"kind":"external_input","id":"external:9e107d9d372bb6826bd81d3542a419d6","output_key":"9e107d9d372bb6826bd81d3542a419d6","url":"https://fal.media/files/source.png"},{"kind":"entity","id":"entity:43ce3411-1a25-4d14-875e-3562d341b090","entity_id":"43ce3411-1a25-4d14-875e-3562d341b090","entity_type":"character","name":"Alice","handle":"alice","tombstone":false}],"edges":[{"from":"external:9e107d9d372bb6826bd81d3542a419d6","to":"request:019e6d0a-e5be-7b82-b329-35ae64296902","kind":"input_to","role":"source"},{"from":"request:019e6d0a-e5be-7b82-b329-35ae64296902","to":"asset:0f343b0931126a20f133d67c2b018a3b","kind":"generated_by","role":null},{"from":"entity:43ce3411-1a25-4d14-875e-3562d341b090","to":"request:019e6d0a-e5be-7b82-b329-35ae64296902","kind":"referenced_entity","role":"content_ref"}]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/favorite":{"post":{"operationId":"favoriteAsset","summary":"Favorite asset","description":"Favorite an asset. Provide a request ID or vector ID; unresolved references are materialized before favorite state is added.","x-mint":{"href":"/platform-apis/v1/assets/favorite","metadata":{"sidebarTitle":"Favorite Asset"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"request_id":"019e6d0a-e5be-7b82-b329-35ae64296902"}}}},"responses":{"200":{"description":"Asset favorited","content":{"application/json":{"schema":{"type":"object","properties":{"is_favorited":{"type":"boolean","description":"Whether the asset is now favorited"}},"required":["is_favorited"]},"example":{"is_favorited":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/unfavorite":{"post":{"operationId":"unfavoriteAsset","summary":"Unfavorite asset","description":"Unfavorite an asset by request ID or vector ID.","x-mint":{"href":"/platform-apis/v1/assets/unfavorite","metadata":{"sidebarTitle":"Unfavorite Asset"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"}}}},"responses":{"200":{"description":"Asset unfavorited","content":{"application/json":{"schema":{"type":"object","properties":{"is_favorited":{"type":"boolean","description":"Whether the asset is now favorited"}},"required":["is_favorited"]},"example":{"is_favorited":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/{vector_id}/tags":{"get":{"operationId":"listAssetTagsForAsset","summary":"List tags for an asset","description":"List tags for an asset by vector ID. Vectors that have not been saved as assets return an empty tag list.","x-mint":{"href":"/platform-apis/v1/assets/tags/list-for-asset","metadata":{"sidebarTitle":"List Asset Tags"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Vector ID","example":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"},"required":true,"description":"Vector ID","name":"vector_id","in":"path"}],"responses":{"200":{"description":"Asset tags","content":{"application/json":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"name":{"type":"string","description":"Tag name","example":"moodboard"},"created_at":{"type":["string","null"],"description":"Tag creation time","example":"2026-05-23T20:00:00.000Z"}},"required":["id","name","created_at"],"description":"Asset tag"},"description":"Asset tags"}},"required":["tags"]},"example":{"tags":[{"id":"43ce3411-1a25-4d14-875e-3562d341b090","name":"moodboard","created_at":"2026-05-23T20:00:00.000Z"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/assets/tags/{tag_id}/assign":{"post":{"operationId":"assignAssetTag","summary":"Assign tag to asset","description":"Assign a tag to an asset. Provide a request ID or vector ID; unresolved references are materialized before tag state is added.","x-mint":{"href":"/platform-apis/v1/assets/tags/assign","metadata":{"sidebarTitle":"Assign Asset Tag"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"required":true,"description":"Tag ID","name":"tag_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"request_id":"019e6d0a-e5be-7b82-b329-35ae64296902"}}}},"responses":{"200":{"description":"Tag assigned","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the operation succeeded","example":true}},"required":["success"]},"example":{"success":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}},"delete":{"operationId":"unassignAssetTag","summary":"Unassign tag from asset","description":"Unassign a tag from an asset by request ID or vector ID.","x-mint":{"href":"/platform-apis/v1/assets/tags/unassign","metadata":{"sidebarTitle":"Unassign Asset Tag"}},"tags":["Assets"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Tag ID","example":"43ce3411-1a25-4d14-875e-3562d341b090"},"required":true,"description":"Tag ID","name":"tag_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","minLength":1,"description":"Request ID to save as an asset before mutating"},"vector_id":{"type":"string","minLength":1,"description":"Vector ID to save as an asset before mutating"}}},"example":{"vector_id":"b1a2b4a5-cb89-51dc-a108-6dbfd8e742fc"}}}},"responses":{"204":{"description":"Tag unassigned"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"409":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"422":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}},"502":{"description":"Upstream asset service error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"Upstream asset service failed"}}}}}}}},"/storage/files/acl":{"get":{"operationId":"getStorageFileAcl","summary":"Get file ACL","x-mint":{"href":"/platform-apis/v1/storage/files/acl/get"},"description":"\nReturns the Access Control List currently applied to a fal CDN file.\n\nThe ACL consists of a default decision (`allow`, `forbid`, or `hide`) plus\noptional per-user rules that override the default. Rule users are returned as\nnicknames where possible.\n\n**Authentication:** Required. The API key must have the `assets:read` permission.\n ","tags":["Storage"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","format":"uri","description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","example":"https://v3.fal.media/files/b/0a1b2c3d/output.png"},"required":true,"description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","name":"url","in":"query"}],"responses":{"200":{"description":"Current ACL of the file","content":{"application/json":{"schema":{"type":"object","properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"description":"User-specific overrides to the default decision. Users are returned as nicknames where possible."}},"required":["default","rules"],"description":"Access Control List currently applied to the file"},"example":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"put":{"operationId":"setStorageFileAcl","summary":"Set file ACL","x-mint":{"href":"/platform-apis/v1/storage/files/acl/set"},"description":"\nReplaces the Access Control List of a fal CDN file.\n\nThe ACL consists of a default decision (`allow`, `forbid`, or `hide`) plus\noptional per-user rules that override the default. Rule users may be specified\nby nickname or user ID. Setting `default` to `allow` with no rules makes the\nfile public; `forbid` or `hide` restricts it to the rules you provide.\n\nRules referencing users that do not exist are dropped. The response reflects\nthe ACL actually applied, so verify it contains the rules you sent.\n\n**Authentication:** Required. The API key must have the `assets:write` permission.\n ","tags":["Storage"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","format":"uri","description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","example":"https://v3.fal.media/files/b/0a1b2c3d/output.png"},"required":true,"description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","name":"url","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"default":[],"description":"User-specific overrides to the default decision"}},"required":["default"],"additionalProperties":false,"description":"Access Control List for a fal CDN file"},"example":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}},"responses":{"200":{"description":"ACL applied to the file","content":{"application/json":{"schema":{"type":"object","properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"description":"User-specific overrides to the default decision. Users are returned as nicknames where possible."}},"required":["default","rules"],"description":"Access Control List currently applied to the file"},"example":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/storage/files/sign":{"post":{"operationId":"signStorageFileUrl","summary":"Sign file URL","x-mint":{"href":"/platform-apis/v1/storage/files/sign"},"description":"\nCreates a signed URL that grants temporary access to a fal CDN file,\nregardless of its ACL. Useful for sharing access-restricted files.\n\nThe signature is valid for `expiration_seconds` (up to 7 days).\n\n**Authentication:** Required. The API key must have the `assets:read` permission.\n ","tags":["Storage"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","format":"uri","description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","example":"https://v3.fal.media/files/b/0a1b2c3d/output.png"},"required":true,"description":"Full URL of the fal CDN file, as returned by the upload APIs (https://v3.fal.media/files/b//). Must not contain query parameters.","name":"url","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expiration_seconds":{"type":"integer","minimum":1,"maximum":604800,"description":"How long the signed URL stays valid, in seconds (max 7 days)","example":3600}},"required":["expiration_seconds"],"additionalProperties":false,"description":"Signing options for the file URL"},"example":{"expiration_seconds":3600}}}},"responses":{"200":{"description":"Signed URL granting temporary access","content":{"application/json":{"schema":{"type":"object","properties":{"signed_url":{"type":"string","description":"URL with an embedded signature granting temporary access","example":"https://v3.fal.media/files/b/0a1b2c3d/output.png?identity=..."}},"required":["signed_url"],"description":"Signed URL response"},"example":{"signed_url":"https://v3.fal.media/files/b/0a1b2c3d/output.png?identity=..."}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/storage/settings":{"get":{"operationId":"getStorageSettings","summary":"Get storage settings","x-mint":{"href":"/platform-apis/v1/storage/settings/get"},"description":"\nReturns the account-level storage lifecycle settings applied to newly uploaded\nfal CDN files:\n\n- `expiration_duration_seconds`: how long files live before being\n automatically deleted (null disables auto-expiration).\n- `initial_acl`: the default ACL applied to new uploads (null means the\n system default, which is public).\n\nBoth fields are null when the account has never saved settings.\n\n**Authentication:** Required. The API key must have the `account:settings:read` permission.\n ","tags":["Storage"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Current storage settings","content":{"application/json":{"schema":{"type":"object","properties":{"expiration_duration_seconds":{"type":["integer","null"],"description":"Seconds after which newly uploaded files automatically expire, or null if auto-expiration is disabled","example":86400},"initial_acl":{"type":["object","null"],"properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"description":"User-specific overrides to the default decision. Users are returned as nicknames where possible."}},"required":["default","rules"],"description":"Default ACL applied to newly uploaded files, or null if the system default (public) is used"}},"required":["expiration_duration_seconds","initial_acl"],"description":"Account-level storage lifecycle settings"},"example":{"expiration_duration_seconds":86400,"initial_acl":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"put":{"operationId":"updateStorageSettings","summary":"Update storage settings","x-mint":{"href":"/platform-apis/v1/storage/settings/update"},"description":"\nReplaces the account-level storage lifecycle settings applied to newly\nuploaded fal CDN files. Omitted or null fields are cleared (reset to the\nsystem default), so always send the full desired configuration.\n\nACL rules referencing users that do not exist are dropped. The response\nreflects the settings actually saved, so verify it contains the rules you sent.\n\nThese are the same settings that the per-request\n`X-Fal-Object-Lifecycle-Preference` header overrides on individual requests.\n\n**Authentication:** Required. The API key must have the `account:settings:write` permission.\n ","tags":["Storage"],"security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expiration_duration_seconds":{"type":["integer","null"],"minimum":1,"description":"Seconds after which newly uploaded files automatically expire and are deleted. Null disables auto-expiration.","example":86400},"initial_acl":{"type":["object","null"],"properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"default":[],"description":"User-specific overrides to the default decision"}},"required":["default"],"additionalProperties":false,"description":"Default ACL applied to newly uploaded files. Null uses the system default (public)."}},"additionalProperties":false,"description":"Account-level storage lifecycle settings"},"example":{"expiration_duration_seconds":86400,"initial_acl":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}}},"responses":{"200":{"description":"Storage settings after the update","content":{"application/json":{"schema":{"type":"object","properties":{"expiration_duration_seconds":{"type":["integer","null"],"description":"Seconds after which newly uploaded files automatically expire, or null if auto-expiration is disabled","example":86400},"initial_acl":{"type":["object","null"],"properties":{"default":{"type":"string","enum":["allow","forbid","hide"],"description":"Fallback decision when no user-specific rule matches","example":"allow"},"rules":{"type":"array","items":{"type":"object","properties":{"user":{"type":"string","minLength":1,"description":"User nickname or user ID the rule applies to","example":"some-user"},"decision":{"type":"string","enum":["allow","forbid","hide"],"description":"Access decision applied to this user","example":"allow"}},"required":["user","decision"],"additionalProperties":false,"description":"A per-user access control rule"},"description":"User-specific overrides to the default decision. Users are returned as nicknames where possible."}},"required":["default","rules"],"description":"Default ACL applied to newly uploaded files, or null if the system default (public) is used"}},"required":["expiration_duration_seconds","initial_acl"],"description":"Account-level storage lifecycle settings"},"example":{"expiration_duration_seconds":86400,"initial_acl":{"default":"forbid","rules":[{"user":"my-teammate","decision":"allow"}]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/analytics":{"get":{"operationId":"serverlessGetAnalytics","summary":"Analytics","x-mint":{"href":"/platform-apis/v1/serverless/analytics","metadata":{"sidebarTitle":"Analytics"}},"description":"\nTime-bucketed metrics for your serverless app endpoints, including request counts,\nsuccess/error rates, and latency percentiles across all inbound traffic.\n`prepare_duration` reflects queue/prepare time before execution;\n`duration` is request execution time.\n\nThis endpoint shows all inbound requests to endpoints you own — not just\nyour own calls. This is ideal for monitoring your deployed apps, tracking\nSLAs, and exporting data to tools like BigQuery or Grafana. You must own\nall requested endpoints; returns 403 otherwise.\n\n**Metric Selection:**\nYou must specify which metrics to include using the `expand` query\nparameter. Only requested metrics will be populated in the response,\nallowing you to optimize query performance and data transfer.\n\n**Available Metrics:**\n\nThe `expand` parameter accepts these values, grouped by category:\n\n*Volume*\n- `request_count`: Total number of requests in the time bucket\n- `success_count`: Successful requests (2xx responses)\n- `user_error_count`: User errors (4xx responses)\n- `error_count`: Server errors (5xx responses)\n\n*Error type breakdown*\n- `startup_error_count`: Startup errors (startup timeout, scheduling failure)\n- `connection_error_count`: Connection errors (timeout, disconnected, refused)\n- `timeout_error_count`: Request timeout errors\n- `runtime_error_count`: Runtime errors (internal error, server error)\n\n*Queue / prepare latency*\n- `p50_prepare_duration`, `p75_prepare_duration`, `p90_prepare_duration`, `p95_prepare_duration`, `p99_prepare_duration`: Time from request submission until execution starts\n\n*Request execution latency*\n- `p25_duration`, `p50_duration`, `p75_duration`, `p90_duration`, `p95_duration`, `p99_duration`: Time spent processing the request\n\n*Cold boot*\n- `cold_boot_count`: Requests with cold boot (startup > 1s)\n- `p50_cold_boot_duration`, `p75_cold_boot_duration`, `p90_cold_boot_duration`: Cold boot duration percentiles\n\n*Billing*\n- `total_billable_duration`: Aggregate billed execution time\n\n**Key Features:**\n- See all traffic to your apps across all callers\n- Selective metric inclusion via expand parameter\n- Performance metrics (latency percentiles, duration stats)\n- Reliability metrics (success/error rates, request counts)\n- Error type breakdown (startup, connection, timeout, runtime)\n- Cold boot metrics (count, latency percentiles)\n- Billing duration tracking\n- Time-bucketed data for trend analysis\n- Flexible date range and timeframe options\n\n**Common Use Cases:**\n- Monitor your serverless app performance and reliability\n- Export analytics to your own observability tools\n- Analyze latency trends across all callers\n- Track error rates and SLA compliance\n ","tags":["Serverless","Analytics"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":true,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["time_series","request_count"],"description":"Data and metrics to include in the response. Use 'time_series' for time-bucketed data, metric names for specific metrics in time series, and 'summary' for aggregate statistics. At least one of 'time_series' or 'summary' and at least one metric are required.","example":["request_count","success_count"]},"required":false,"description":"Data and metrics to include in the response. Use 'time_series' for time-bucketed data, metric names for specific metrics in time series, and 'summary' for aggregate statistics. At least one of 'time_series' or 'summary' and at least one metric are required.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Analytics data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"time_series":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"Time bucket timestamp in user's timezone with offset (ISO8601 datetime)"},"results":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier for these statistics"},"request_count":{"type":"integer","minimum":0,"description":"Total number of requests"},"success_count":{"type":"integer","minimum":0,"description":"Number of successful requests (2xx responses)"},"user_error_count":{"type":"integer","minimum":0,"description":"Number of user errors (4xx responses)"},"error_count":{"type":"integer","minimum":0,"description":"Number of server errors (5xx responses)"},"p50_prepare_duration":{"type":"number","minimum":0,"description":"50th percentile queue/prepare time before execution in seconds"},"p75_prepare_duration":{"type":"number","minimum":0,"description":"75th percentile queue/prepare time before execution in seconds"},"p90_prepare_duration":{"type":"number","minimum":0,"description":"90th percentile queue/prepare time before execution in seconds"},"p95_prepare_duration":{"type":"number","minimum":0,"description":"95th percentile queue/prepare time before execution in seconds"},"p99_prepare_duration":{"type":"number","minimum":0,"description":"99th percentile queue/prepare time before execution in seconds"},"p50_duration":{"type":"number","minimum":0,"description":"50th percentile request execution duration in seconds"},"p75_duration":{"type":"number","minimum":0,"description":"75th percentile request execution duration in seconds"},"p90_duration":{"type":"number","minimum":0,"description":"90th percentile request execution duration in seconds"},"p25_duration":{"type":"number","minimum":0,"description":"25th percentile request execution duration in seconds"},"p95_duration":{"type":"number","minimum":0,"description":"95th percentile request execution duration in seconds"},"p99_duration":{"type":"number","minimum":0,"description":"99th percentile request execution duration in seconds"},"startup_error_count":{"type":"integer","minimum":0,"description":"Number of startup errors (startup timeout, scheduling failure)"},"connection_error_count":{"type":"integer","minimum":0,"description":"Number of connection errors (connection timeout, disconnected, refused)"},"timeout_error_count":{"type":"integer","minimum":0,"description":"Number of request timeout errors"},"runtime_error_count":{"type":"integer","minimum":0,"description":"Number of runtime errors (internal error, server error)"},"cold_boot_count":{"type":"integer","minimum":0,"description":"Number of requests with cold boot (startup time > 1 second)"},"p50_cold_boot_duration":{"type":"number","minimum":0,"description":"50th percentile cold boot duration in seconds (only cold starts)"},"p75_cold_boot_duration":{"type":"number","minimum":0,"description":"75th percentile cold boot duration in seconds (only cold starts)"},"p90_cold_boot_duration":{"type":"number","minimum":0,"description":"90th percentile cold boot duration in seconds (only cold starts)"},"total_billable_duration":{"type":"number","minimum":0,"description":"Total billable execution duration in seconds (sum of all request durations)"}},"required":["endpoint_id"],"description":"Performance and reliability analytics. Only requested metrics (via expand parameter) will be present in the response. 'prepare_duration' reflects queue/prepare time before execution; 'duration' is request execution time."},"description":"Analytics records for this time bucket"}},"required":["bucket","results"],"description":"Time bucket with grouped analytics records"},"description":"Time series analytics data grouped by time bucket (when expand includes 'time_series'). Each bucket contains all analytics records for that time period."},"summary":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Endpoint identifier for these statistics"},"request_count":{"type":"integer","minimum":0,"description":"Total number of requests"},"success_count":{"type":"integer","minimum":0,"description":"Number of successful requests (2xx responses)"},"user_error_count":{"type":"integer","minimum":0,"description":"Number of user errors (4xx responses)"},"error_count":{"type":"integer","minimum":0,"description":"Number of server errors (5xx responses)"},"p50_prepare_duration":{"type":"number","minimum":0,"description":"50th percentile queue/prepare time before execution in seconds"},"p75_prepare_duration":{"type":"number","minimum":0,"description":"75th percentile queue/prepare time before execution in seconds"},"p90_prepare_duration":{"type":"number","minimum":0,"description":"90th percentile queue/prepare time before execution in seconds"},"p95_prepare_duration":{"type":"number","minimum":0,"description":"95th percentile queue/prepare time before execution in seconds"},"p99_prepare_duration":{"type":"number","minimum":0,"description":"99th percentile queue/prepare time before execution in seconds"},"p50_duration":{"type":"number","minimum":0,"description":"50th percentile request execution duration in seconds"},"p75_duration":{"type":"number","minimum":0,"description":"75th percentile request execution duration in seconds"},"p90_duration":{"type":"number","minimum":0,"description":"90th percentile request execution duration in seconds"},"p25_duration":{"type":"number","minimum":0,"description":"25th percentile request execution duration in seconds"},"p95_duration":{"type":"number","minimum":0,"description":"95th percentile request execution duration in seconds"},"p99_duration":{"type":"number","minimum":0,"description":"99th percentile request execution duration in seconds"},"startup_error_count":{"type":"integer","minimum":0,"description":"Number of startup errors (startup timeout, scheduling failure)"},"connection_error_count":{"type":"integer","minimum":0,"description":"Number of connection errors (connection timeout, disconnected, refused)"},"timeout_error_count":{"type":"integer","minimum":0,"description":"Number of request timeout errors"},"runtime_error_count":{"type":"integer","minimum":0,"description":"Number of runtime errors (internal error, server error)"},"cold_boot_count":{"type":"integer","minimum":0,"description":"Number of requests with cold boot (startup time > 1 second)"},"p50_cold_boot_duration":{"type":"number","minimum":0,"description":"50th percentile cold boot duration in seconds (only cold starts)"},"p75_cold_boot_duration":{"type":"number","minimum":0,"description":"75th percentile cold boot duration in seconds (only cold starts)"},"p90_cold_boot_duration":{"type":"number","minimum":0,"description":"90th percentile cold boot duration in seconds (only cold starts)"},"total_billable_duration":{"type":"number","minimum":0,"description":"Total billable execution duration in seconds (sum of all request durations)"}},"required":["endpoint_id"],"description":"Aggregate performance statistics for the entire date range"},"description":"Aggregate statistics (when expand includes 'summary')"}},"required":["next_cursor","has_more"],"description":"Response containing performance analytics with pagination support"},"example":{"time_series":[{"bucket":"2025-01-15T12:00:00-05:00","results":[{"endpoint_id":"your-username/your-app","request_count":1500,"success_count":1450,"p50_duration":2.5,"p90_duration":4.8}]}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/apps":{"get":{"operationId":"serverlessListApps","summary":"List Applications","x-mint":{"href":"/platform-apis/v1/serverless/apps/list","metadata":{"sidebarTitle":"List Applications"}},"description":"Lists the serverless applications owned by the authenticated account, with\nthe configuration needed for follow-up calls.\n\nEach application includes its canonical `endpoint_id` ('/'),\nwhich is the identifier accepted by the analytics, requests, logs, and\nqueue endpoints — use this endpoint to discover identifiers instead of\nasking users to paste them.\n\n**Authentication:** Required via API key. Only applications owned by the\nauthenticated account are returned.","tags":["Serverless","Apps"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Environment to list apps from. Defaults to the main environment.","example":"main"},"required":false,"description":"Environment to list apps from. Defaults to the main environment.","name":"environment","in":"query"},{"schema":{"type":"string","description":"Case-insensitive substring match on the app name","example":"image"},"required":false,"description":"Case-insensitive substring match on the app name","name":"search","in":"query"}],"responses":{"200":{"description":"Successfully retrieved the caller's applications","content":{"application/json":{"schema":{"type":"object","properties":{"apps":{"type":"array","items":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Canonical endpoint identifier ('/') accepted by the analytics, requests, logs, and queue endpoints","example":"user_123/my-app"},"name":{"type":"string","description":"Application name (alias)","example":"my-app"},"owner":{"type":"string","description":"Nickname of the app owner","example":"user_123"},"environment":{"type":"string","description":"Environment the app is deployed in","example":"main"},"machine_type":{"type":"string","description":"Machine type the app runs on","example":"GPU-H100"},"auth_mode":{"type":"string","enum":["private","public","shared"],"description":"Endpoint authentication mode","example":"private"},"keep_alive":{"type":"number","description":"Seconds a runner stays warm after its last request","example":300},"min_concurrency":{"type":"number","description":"Minimum number of runners kept alive","example":0},"max_concurrency":{"type":"number","description":"Maximum number of concurrent runners","example":2},"request_timeout":{"type":"number","description":"Request timeout in seconds","example":600},"startup_timeout":{"type":"number","description":"Runner startup timeout in seconds","example":300},"valid_regions":{"type":"array","items":{"type":"string"},"description":"Regions the app may run in","example":["us"]},"updated_at":{"type":"string","description":"Last update timestamp (UTC ISO8601)","example":"2026-07-01T12:00:00Z"}},"required":["endpoint_id","name","owner","environment","machine_type","auth_mode","keep_alive","min_concurrency","max_concurrency","request_timeout","startup_timeout","valid_regions","updated_at"],"additionalProperties":false,"description":"A serverless application owned by the caller"},"description":"Serverless applications owned by the authenticated account"}},"required":["apps"],"additionalProperties":false,"description":"The caller's serverless applications"},"example":{"apps":[{"endpoint_id":"user_123/my-app","name":"my-app","owner":"user_123","environment":"main","machine_type":"GPU-H100","auth_mode":"private","keep_alive":300,"min_concurrency":0,"max_concurrency":2,"request_timeout":600,"startup_timeout":300,"valid_regions":["us"],"updated_at":"2026-07-01T12:00:00Z"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/apps/{owner}/{name}/queue":{"get":{"operationId":"serverlessGetAppQueueInfo","summary":"Queue Size","x-mint":{"href":"/platform-apis/v1/serverless/apps/queue","metadata":{"sidebarTitle":"Queue Size"}},"description":"Retrieves the current queue size for a specific application.","tags":["Serverless","Apps"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Username of the app owner","example":"user_123"},"required":true,"description":"Username of the app owner","name":"owner","in":"path"},{"schema":{"type":"string","description":"Application name","example":"my-app"},"required":true,"description":"Application name","name":"name","in":"path"}],"responses":{"200":{"description":"Successfully retrieved queue information","content":{"application/json":{"schema":{"type":"object","properties":{"queue_size":{"type":"integer","minimum":0,"description":"Current number of requests in the queue","example":5}},"required":["queue_size"],"additionalProperties":false,"description":"Status of the app queue"},"example":{"queue_size":5}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"delete":{"operationId":"serverlessFlushAppQueue","summary":"Flush Application Queue","x-mint":{"href":"/platform-apis/v1/serverless/apps/flush-queue"},"description":"Flushes all pending requests from an application's queue.\n\n**Authentication:** Required via API key\n\n**Idempotency:**\n- Optional `Idempotency-Key` header prevents duplicate flushes on retries\n- Responses cached for 10 minutes per unique key\n\n**Use Cases:**\n- Clear stuck or outdated requests from the queue\n- Reset queue state during development or testing\n- Cancel all pending requests for an application\n\n**Important:**\n- This operation is irreversible\n- All pending requests in the queue will be cancelled\n- Requests already being processed will not be affected","tags":["Serverless","Apps"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Username of the app owner","example":"user_123"},"required":true,"description":"Username of the app owner","name":"owner","in":"path"},{"schema":{"type":"string","description":"Application name","example":"my-app"},"required":true,"description":"Application name","name":"name","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"204":{"description":"Queue flushed successfully"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/apps/{owner}/{name}/runners/history":{"get":{"operationId":"serverlessGetRunnerHistory","summary":"Runner State History","x-mint":{"href":"/platform-apis/v1/serverless/apps/runner-history","metadata":{"sidebarTitle":"Runner State History"}},"description":"Returns historical runner counts by state (running, idle, pending, draining)\nfor an application, bucketed over time.\n\n**Use cases:**\n- Capacity/utilization analysis: compare idle vs running over days or weeks\n to see how much reserved capacity goes unused (use `aggregation=avg`)\n- Incident forensics: correlate error spikes with runner drops or drain\n events around the incident window (use `aggregation=max`)\n\n**Time range:** up to 90 days of history. Defaults to the last 24 hours when\n`start`/`end` are omitted. Bucket size is auto-detected from the range\nunless `timeframe` is specified.\n\n**Authentication:** Required via API key. Only the app owner can query it.","tags":["Serverless","Apps"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Username of the app owner","example":"user_123"},"required":true,"description":"Username of the app owner","name":"owner","in":"path"},{"schema":{"type":"string","description":"Application name","example":"my-app"},"required":true,"description":"Application name","name":"name","in":"path"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Bucket size for the time series (auto-detected from the date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Bucket size for the time series (auto-detected from the date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["max","avg"],"default":"max","description":"How runner counts are aggregated within each bucket: 'max' shows peak concurrency (capacity analysis), 'avg' shows mean concurrency (utilization analysis).","example":"max"},"required":false,"description":"How runner counts are aggregated within each bucket: 'max' shows peak concurrency (capacity analysis), 'avg' shows mean concurrency (utilization analysis).","name":"aggregation","in":"query"}],"responses":{"200":{"description":"Successfully retrieved runner state history","content":{"application/json":{"schema":{"type":"object","properties":{"endpoint_id":{"type":"string","description":"Canonical endpoint identifier ('/')","example":"user_123/my-app"},"timeframe":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Bucket size used for the series (resolved if auto-detected)","example":"day"},"aggregation":{"type":"string","enum":["max","avg"],"description":"Aggregation applied within each bucket","example":"max"},"history":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","description":"Bucket start timestamp (UTC ISO8601)","example":"2026-07-01T12:00:00Z"},"running":{"type":"number","description":"Runners actively processing requests","example":2},"idle":{"type":"number","description":"Warm runners waiting for requests (billed but unused)","example":1},"pending":{"type":"number","description":"Runners waiting to be scheduled or starting up","example":0},"draining":{"type":"number","description":"Runners finishing in-flight work before shutting down","example":0}},"required":["timestamp","running","idle","pending","draining"],"additionalProperties":false,"description":"Runner counts by state for one time bucket"},"description":"Runner state counts per time bucket, oldest first"}},"required":["endpoint_id","timeframe","aggregation","history"],"additionalProperties":false,"description":"Historical runner state counts for an application"},"example":{"endpoint_id":"user_123/my-app","timeframe":"hour","aggregation":"max","history":[{"timestamp":"2026-07-01T12:00:00.000Z","running":2,"idle":1,"pending":0,"draining":0}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/apps/{owner}/{name}/events":{"get":{"operationId":"serverlessListAppEvents","summary":"Application Events","x-mint":{"href":"/platform-apis/v1/serverless/apps/events","metadata":{"sidebarTitle":"Application Events"}},"description":"Returns the operational event history for an application: deployments,\nconfiguration changes, and runner lifecycle transitions (started, failed,\ndraining, etc.), newest first.\n\n**Use cases:**\n- Incident correlation: answer \"what changed around this time?\" — did a\n deploy, config change, or runner failure coincide with an error spike?\n- Deployment audit: see when revisions went out and who triggered them\n\n**Time range:** defaults to the last 24 hours when `start`/`end` are\nomitted. Use `category` filters to narrow to specific event types.\n\n**Authentication:** Required via API key. Only the app owner can query it.","tags":["Serverless","Apps"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Username of the app owner","example":"user_123"},"required":true,"description":"Username of the app owner","name":"owner","in":"path"},{"schema":{"type":"string","description":"Application name","example":"my-app"},"required":true,"description":"Application name","name":"name","in":"path"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"anyOf":[{"type":"string","enum":["runner_started","runner_failed","runner_finished","runner_pending","runner_startup_failure","runner_docker_pull","runner_setup","runner_draining","runner_stopping","deployment_started","deployment_failed","deployment_ended","deployment_rolling_started","deployment_rolling_failed","deployment_rolling_ended","deployment_recreate_applied","config_changed"]},{"type":"array","items":{"type":"string","enum":["runner_started","runner_failed","runner_finished","runner_pending","runner_startup_failure","runner_docker_pull","runner_setup","runner_draining","runner_stopping","deployment_started","deployment_failed","deployment_ended","deployment_rolling_started","deployment_rolling_failed","deployment_rolling_ended","deployment_recreate_applied","config_changed"]}}],"description":"Filter by event category. Repeat the parameter to include multiple categories: ?category=deployment_started&category=config_changed","example":["deployment_started"]},"required":false,"description":"Filter by event category. Repeat the parameter to include multiple categories: ?category=deployment_started&category=config_changed","name":"category","style":"form","explode":true,"in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50,"description":"Maximum number of events to return per page (1-1000)","example":50},"required":false,"description":"Maximum number of events to return per page (1-1000)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response","name":"cursor","in":"query"}],"responses":{"200":{"description":"Successfully retrieved application events","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"endpoint_id":{"type":"string","description":"Canonical endpoint identifier ('/')","example":"user_123/my-app"},"events":{"type":"array","items":{"type":"object","properties":{"event_id":{"type":"string","description":"Unique event identifier","example":"a1b2c3d4-0000-0000-0000-000000000000"},"category":{"type":"string","enum":["runner_started","runner_failed","runner_finished","runner_pending","runner_startup_failure","runner_docker_pull","runner_setup","runner_draining","runner_stopping","deployment_started","deployment_failed","deployment_ended","deployment_rolling_started","deployment_rolling_failed","deployment_rolling_ended","deployment_recreate_applied","config_changed"],"description":"Event category","example":"deployment_started"},"created_at":{"type":"string","description":"Event timestamp (UTC ISO8601)","example":"2026-07-01T12:00:00Z"},"payload":{"type":"object","properties":{"job_id":{"type":"string","description":"Runner identifier (runner_* events)","example":"5f8e9c2a"},"machine_type":{"type":"string","description":"Machine type of the runner (runner_* events)","example":"GPU-H100"},"reason":{"type":"string","description":"Human-readable reason for the transition, when available"},"state":{"type":"string","description":"Runner state at failure time (runner_failed events)","example":"RUNNING"},"new_application_id":{"type":"string","description":"Revision deployed by this event (deployment_* events)"},"old_application_id":{"type":"string","description":"Revision being replaced (deployment_* events)"},"old_config":{"type":"object","additionalProperties":{},"description":"Application config before the change (config_changed events)"},"new_config":{"type":"object","additionalProperties":{},"description":"Application config after the change (config_changed events)"},"old_app_auth_mode":{"type":"string","description":"Endpoint auth mode before the change (config_changed events)"},"new_app_auth_mode":{"type":"string","description":"Endpoint auth mode after the change (config_changed events)"},"actor":{"type":"object","properties":{"nickname":{"type":"string","description":"Nickname of the user who triggered the change","example":"user_123"},"full_name":{"type":"string","description":"Display name of the user who triggered the change","example":"Ada Lovelace"}},"additionalProperties":false,"description":"User who triggered the event, when known"}},"additionalProperties":false,"description":"Event details; populated fields depend on the event category (runner_*, deployment_*, config_changed)"}},"required":["event_id","category","created_at","payload"],"additionalProperties":false,"description":"An operational event on a serverless application"},"description":"Operational events, newest first"}},"required":["next_cursor","has_more","endpoint_id","events"],"additionalProperties":false,"description":"Operational event history for an application"},"example":{"endpoint_id":"user_123/my-app","events":[{"event_id":"a1b2c3d4-0000-0000-0000-000000000000","category":"deployment_started","created_at":"2026-07-01T12:00:00Z","payload":{"new_application_id":"app-rev-2","old_application_id":"app-rev-1","actor":{"nickname":"user_123"}}}],"next_cursor":"Mg==","has_more":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/files/list":{"get":{"operationId":"serverlessListRoot","summary":"List files (root)","x-mint":{"href":"/platform-apis/v1/serverless/files/list","metadata":{"sidebarTitle":"List Files (Root)"}},"description":"Lists files and folders in the root of your project storage.","tags":["Serverless","Files"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successfully listed files","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Full file or folder path","example":"datasets/images/cat.jpg"},"name":{"type":"string","description":"Base name of the file or folder","example":"cat.jpg"},"created_time":{"type":"string","format":"date-time","description":"Creation timestamp (UTC ISO 8601)","example":"2024-11-08T00:00:00.000Z"},"updated_time":{"type":"string","format":"date-time","description":"Last update timestamp (UTC ISO 8601)","example":"2024-11-09T00:00:00.000Z"},"is_file":{"type":"boolean","description":"True if this item is a file, false if it is a folder","example":true},"size":{"type":"number","description":"File size in bytes (0 for folders)","example":1250023},"checksum_sha256":{"type":"string","description":"Optional SHA256 checksum","example":"b1946ac92492d2347c6235b4d2611184d5c3f1f0f44aa7b27d3b1d5b0f5a6a11"},"checksum_md5":{"type":"string","description":"Optional MD5 checksum","example":"9e107d9d372bb6826bd81d3542a419d6"}},"required":["path","name","created_time","updated_time","is_file","size"],"additionalProperties":false,"description":"File or folder specification"},"description":"Array of files and folders for the requested directory"},"example":[{"path":"datasets","name":"datasets","created_time":"2024-11-08T00:00:00.000Z","updated_time":"2024-11-09T00:00:00.000Z","is_file":false,"size":0}]}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/files/list/{dir}":{"get":{"operationId":"serverlessListDirectory","summary":"List files (directory)","x-mint":{"href":"/platform-apis/v1/serverless/files/list/directory"},"description":"Lists files and folders within the specified directory path.","tags":["Serverless","Files"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Directory path to list","example":"datasets/images"},"required":true,"description":"Directory path to list","name":"dir","in":"path"}],"responses":{"200":{"description":"Successfully listed files","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Full file or folder path","example":"datasets/images/cat.jpg"},"name":{"type":"string","description":"Base name of the file or folder","example":"cat.jpg"},"created_time":{"type":"string","format":"date-time","description":"Creation timestamp (UTC ISO 8601)","example":"2024-11-08T00:00:00.000Z"},"updated_time":{"type":"string","format":"date-time","description":"Last update timestamp (UTC ISO 8601)","example":"2024-11-09T00:00:00.000Z"},"is_file":{"type":"boolean","description":"True if this item is a file, false if it is a folder","example":true},"size":{"type":"number","description":"File size in bytes (0 for folders)","example":1250023},"checksum_sha256":{"type":"string","description":"Optional SHA256 checksum","example":"b1946ac92492d2347c6235b4d2611184d5c3f1f0f44aa7b27d3b1d5b0f5a6a11"},"checksum_md5":{"type":"string","description":"Optional MD5 checksum","example":"9e107d9d372bb6826bd81d3542a419d6"}},"required":["path","name","created_time","updated_time","is_file","size"],"additionalProperties":false,"description":"File or folder specification"},"description":"Array of files and folders for the requested directory"},"examples":{"success":{"value":[{"path":"datasets/images/cat.jpg","name":"cat.jpg","created_time":"2024-11-08T00:00:00.000Z","updated_time":"2024-11-09T00:00:00.000Z","is_file":true,"size":1250023,"checksum_sha256":"b1946ac92492d2347c6235b4d2611184d5c3f1f0f44aa7b27d3b1d5b0f5a6a11"}],"summary":"Directory listing"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/files/file/{file}":{"get":{"operationId":"serverlessDownloadFile","summary":"Download file","x-mint":{"href":"/platform-apis/v1/serverless/files/file/download"},"description":"Downloads a file by its path. Proxies the underlying storage response.","tags":["Serverless","Files"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Path of the file to download","example":"datasets/images/cat.jpg"},"required":true,"description":"Path of the file to download","name":"file","in":"path"}],"responses":{"200":{"description":"File stream","content":{"application/octet-stream":{"schema":{}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/files/file/url/{file}":{"post":{"operationId":"serverlessUploadFromUrl","summary":"Upload file from URL","x-mint":{"href":"/platform-apis/v1/serverless/files/file/upload-from-url"},"description":"Creates a new file at the target path by downloading it from the provided URL.","tags":["Serverless","Files"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Target file path (including filename)","example":"datasets/images/cat.jpg"},"required":true,"description":"Target file path (including filename)","name":"file","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Publicly accessible URL for the file"}},"required":["url"],"additionalProperties":false,"description":"Upload a file from a URL into the target path"},"example":{"url":"https://example.com/cat.jpg"}}}},"responses":{"200":{"description":"Upload initiated","content":{"application/json":{"schema":{"type":"boolean","description":"Indicates whether the operation was successful"},"example":true}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/files/file/local/{target_path}":{"post":{"operationId":"serverlessUploadLocalFile","summary":"Upload local file (multipart/form-data)","x-mint":{"href":"/platform-apis/v1/serverless/files/file/upload-local"},"description":"Uploads a local file using multipart/form-data. The file field name must be `file_upload`.","tags":["Serverless","Files"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Target path (including filename)","example":"datasets/images/cat.jpg"},"required":true,"description":"Target path (including filename)","name":"target_path","in":"path"},{"schema":{"type":["boolean","null"],"default":false,"description":"If true and the uploaded file is a ZIP, it will be extracted","example":false},"required":false,"description":"If true and the uploaded file is a ZIP, it will be extracted","name":"unzip","in":"query"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file_upload":{"description":"Binary file content"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Upload completed","content":{"application/json":{"schema":{"type":"boolean","description":"Indicates whether the operation was successful"},"example":true}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/metrics":{"get":{"operationId":"serverlessGetMetrics","summary":"Metrics","x-mint":{"href":"/platform-apis/v1/serverless/metrics","metadata":{"sidebarTitle":"Prometheus Metrics"}},"description":"\nReturns Prometheus-compatible metrics in text format for integration into your\nobservability stack\n\n**Authentication:** Required - Uses API key authentication\n\n**Format:** Returns text/plain in Prometheus exposition format\n\n**Common Use Cases:**\n- Export app stats to your observability provider (grafana, datadog etc)\n- Track runner health and performance\n- Set up alerts and monitoring\n\nSee [Prometheus documentation](https://prometheus.io/docs/instrumenting/exposition_formats/) for format details.\n ","tags":["Serverless","Metrics","Observability"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Prometheus-compatible metrics retrieved successfully","content":{"text/plain":{"schema":{"type":"string","description":"Prometheus-compatible metrics in text format","example":"# HELP fal_app_queue_size Current size of the fal app queue\n# TYPE fal_app_queue_size gauge\nfal_requests_total{application=\"my/app\"} 10"},"example":"# HELP fal_app_runners Number of fal app runners\n# TYPE fal_app_runners gauge\nfal_app_runners{application=\"my/app\",machine_type=\"NVIDIA B200\",state=\"running\"} 21\n# HELP fal_app_queue_size Current size of the fal app queue\n# TYPE fal_app_queue_size gauge\nfal_app_queue_size{application=\"my/app\"} 7\n# HELP fal_app_concurrent_requests Current number of concurrent requests being processed\n# TYPE fal_app_concurrent_requests gauge\nfal_app_concurrent_requests{application=\"my/app\"} 3\n# HELP fal_app_requests_completed Number of requests completed in the last minute\n# TYPE fal_app_requests_completed gauge\nfal_app_requests_completed{application=\"my/app\",method=\"POST\",status=\"200\"} 18\n# HELP fal_app_requests_received Number of requests received in the last minute\n# TYPE fal_app_requests_received gauge\nfal_app_requests_received{application=\"my/app\",method=\"POST\"} 24\n# HELP fal_app_request_latency Number of requests completed, bucketed by latency in seconds\n# TYPE fal_app_request_latency gauge\nfal_app_request_latency{application=\"my/app\",le=\"1.0\"} 5\nfal_app_request_latency{application=\"my/app\",le=\"+Inf\"} 24"}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/logs/history":{"post":{"operationId":"serverlessLogsHistory","summary":"Logs history (paginated)","x-mint":{"href":"/platform-apis/v1/serverless/logs/history","metadata":{"sidebarTitle":"Logs History"}},"description":"Returns paginated historical logs that match the provided filters.","tags":["Serverless","Logs"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":1000,"description":"Number of results per page","example":100},"required":false,"description":"Number of results per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response (timestamp-based). Use as 'until' parameter for next page.","example":"2024-11-09T00:00:00.000Z"},"required":false,"description":"Pagination cursor from previous response (timestamp-based). Use as 'until' parameter for next page.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific app ID(s) in '/' format (e.g. 'fal-ai/my-app'). Accepts 1-50 app IDs. Supports comma-separated values: ?app_id=fal-ai/foo,fal-ai/bar or array syntax: ?app_id=fal-ai/foo&app_id=fal-ai/bar","example":["fal-ai/my-app"]},"required":false,"description":"Filter by specific app ID(s) in '/' format (e.g. 'fal-ai/my-app'). Accepts 1-50 app IDs. Supports comma-separated values: ?app_id=fal-ai/foo,fal-ai/bar or array syntax: ?app_id=fal-ai/foo&app_id=fal-ai/bar","name":"app_id","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Filter by revision","example":"rev_abc123"},"required":false,"description":"Filter by revision","name":"revision","in":"query"},{"schema":{"type":"string","enum":["grpc-run","grpc-register","gateway","cron"],"description":"Filter by run source","example":"grpc-run"},"required":false,"description":"Filter by run source","name":"run_source","in":"query"},{"schema":{"type":["boolean","null"],"default":false,"description":"Include tracebacks","example":false},"required":false,"description":"Include tracebacks","name":"traceback","in":"query"},{"schema":{"type":"string","description":"Free-text search","example":"error"},"required":false,"description":"Free-text search","name":"search","in":"query"},{"schema":{"type":"string","description":"Minimum log level","example":"error"},"required":false,"description":"Minimum log level","name":"level","in":"query"},{"schema":{"type":"string","description":"Filter by job id","example":"job_123"},"required":false,"description":"Filter by job id","name":"job_id","in":"query"},{"schema":{"type":"string","description":"Filter by request id","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"required":false,"description":"Filter by request id","name":"request_id","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Label key to filter"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter value"},"condition_type":{"type":"string","enum":["equals","in","not_equals","not_in"],"description":"Condition type for label filtering"}},"required":["key","value"],"additionalProperties":false,"description":"Filter for log labels"}},"examples":{"single":{"value":[{"key":"fal_job_id","value":"job_123"}],"summary":"Filter by a single label"}}}}},"responses":{"200":{"description":"Logs history retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"items":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","description":"ISO timestamp of the log line"},"level":{"type":"string","description":"Log level"},"message":{"type":"string","description":"Log message"},"app":{"type":"string","description":"App identifier"},"revision":{"type":"string","description":"Revision identifier"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional labels"}},"required":["timestamp","level","message","app","revision"],"additionalProperties":false,"description":"A single log entry"},"description":"Array of log entries matching the query"}},"required":["next_cursor","has_more","items"],"description":"Paginated logs response"},"examples":{"success":{"value":{"items":[{"timestamp":"2024-11-09T10:30:45.123Z","level":"info","message":"Application started","app":"my-app","revision":"rev_abc123","labels":{"fal_job_id":"job_123"}}],"next_cursor":"2024-11-09T10:30:44.000Z","has_more":true},"summary":"Paginated logs response"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/logs/stream":{"post":{"operationId":"serverlessLogsStream","summary":"Logs stream (SSE)","x-mint":{"href":"/platform-apis/v1/serverless/logs/stream","metadata":{"sidebarTitle":"Logs Stream (SSE)"}},"description":"Streams live logs that match the provided filters using Server-Sent Events.","tags":["Serverless","Logs"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific app ID(s) in '/' format (e.g. 'fal-ai/my-app'). Accepts 1-50 app IDs. Supports comma-separated values: ?app_id=fal-ai/foo,fal-ai/bar or array syntax: ?app_id=fal-ai/foo&app_id=fal-ai/bar","example":["fal-ai/my-app"]},"required":false,"description":"Filter by specific app ID(s) in '/' format (e.g. 'fal-ai/my-app'). Accepts 1-50 app IDs. Supports comma-separated values: ?app_id=fal-ai/foo,fal-ai/bar or array syntax: ?app_id=fal-ai/foo&app_id=fal-ai/bar","name":"app_id","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Filter by revision","example":"rev_abc123"},"required":false,"description":"Filter by revision","name":"revision","in":"query"},{"schema":{"type":"string","enum":["grpc-run","grpc-register","gateway","cron"],"description":"Filter by run source","example":"grpc-run"},"required":false,"description":"Filter by run source","name":"run_source","in":"query"},{"schema":{"type":["boolean","null"],"default":false,"description":"Include tracebacks","example":false},"required":false,"description":"Include tracebacks","name":"traceback","in":"query"},{"schema":{"type":"string","description":"Free-text search","example":"error"},"required":false,"description":"Free-text search","name":"search","in":"query"},{"schema":{"type":"string","description":"Minimum log level","example":"error"},"required":false,"description":"Minimum log level","name":"level","in":"query"},{"schema":{"type":"string","description":"Filter by job id","example":"job_123"},"required":false,"description":"Filter by job id","name":"job_id","in":"query"},{"schema":{"type":"string","description":"Filter by request id","example":"019e6d0a-e5be-7b82-b329-35ae64296902"},"required":false,"description":"Filter by request id","name":"request_id","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Label key to filter"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter value"},"condition_type":{"type":"string","enum":["equals","in","not_equals","not_in"],"description":"Condition type for label filtering"}},"required":["key","value"],"additionalProperties":false,"description":"Filter for log labels"}},"examples":{"single":{"value":[{"key":"fal_job_id","value":"job_123"}],"summary":"Filter by a single label"}}}}},"responses":{"200":{"description":"SSE stream started","content":{"text/event-stream":{"schema":{}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/requests/by-endpoint":{"get":{"operationId":"serverlessListRequestsByEndpoint","summary":"List requests by endpoint(s)","x-mint":{"href":"/platform-apis/v1/serverless/requests/by-endpoint","metadata":{"sidebarTitle":"List Requests by Endpoint"}},"description":"Lists requests for one or more endpoints owned by the authenticated user.\nUse repeated or comma-separated `endpoint_id` (same as other platform list APIs).\n\n**Authentication:** Requires API key.\n\n**Filters:**\n- Time range via start / end. If `start` is omitted, defaults to the last 24 hours — unless `request_id` is provided, in which case the default start bound is widened to 90 days.\n- Status (success, error, user_error)\n- Request ID\n- Pagination via cursor/limit (limit defaults to 50, max 100)\n\n**Sorting:**\n- By end time (default) or duration\n\n**Expansions:**\n- Include payloads by adding expand=payloads\n- Include per-request `billable_units` by adding expand=billing (endpoint owner only)","tags":["Serverless","Requests"],"security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Number of items to return per page (max 100)","example":20},"required":false,"description":"Number of items to return per page (max 100)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor encoding the page number","example":"Mg=="},"required":false,"description":"Pagination cursor encoding the page number","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":true,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","enum":["success","error","user_error"],"description":"Filter by request status","example":"success"},"required":false,"description":"Filter by request status","name":"status","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Filter by specific request ID","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"required":false,"description":"Filter by specific request ID","name":"request_id","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Fields to expand in the response. Use payloads to include input and output payloads. Use billing to include billable_units per request.","example":["payloads","billing"]},"required":false,"description":"Fields to expand in the response. Use payloads to include input and output payloads. Use billing to include billable_units per request.","name":"expand","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","enum":["ended_at","duration"],"default":"ended_at","description":"Sort results by end time or duration","example":"ended_at"},"required":false,"description":"Sort results by end time or duration","name":"sort_by","in":"query"}],"responses":{"200":{"description":"Requests listed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"items":{"type":"array","items":{"type":"object","properties":{"request_id":{"type":"string","format":"uuid","description":"Unique identifier for the request","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"endpoint_id":{"type":"string","description":"Endpoint that was executed for this request","example":"fal-ai/flux/dev"},"started_at":{"type":"string","format":"date-time","description":"Time when request processing started","example":"2025-01-01T00:00:05Z"},"sent_at":{"type":"string","format":"date-time","description":"Time when request was sent to the backend","example":"2025-01-01T00:00:01Z"},"ended_at":{"type":["string","null"],"format":"date-time","description":"Time when request finished processing","example":"2025-01-01T00:00:08Z"},"status_code":{"type":["integer","null"],"description":"HTTP status code returned by the request","example":200},"duration":{"type":["number","null"],"description":"Total request duration in seconds","example":7.8},"json_input":{"description":"Input payload for the request"},"json_output":{"description":"Output payload for the request"},"runner_id":{"type":["string","null"],"format":"uuid","description":"Unique identifier for the runner execution instance. Null if no runner was assigned (e.g. the request failed before dispatch).","example":"f1e2d3c4-b5a6-7890-dcba-0987654321fe"},"billable_units":{"type":["number","null"],"description":"Billable units for this request (only present when expand=billing). Null if a billing event has not yet been recorded for this request.","example":1.5}},"required":["request_id","endpoint_id","started_at","sent_at","runner_id"],"description":"Serverless request item"},"description":"List of requests matching the filter"}},"required":["next_cursor","has_more","items"],"description":"Paginated list of serverless requests for the specified endpoint"},"example":{"items":[{"request_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","endpoint_id":"fal-ai/flux/dev","runner_id":"f1e2d3c4-b5a6-7890-dcba-0987654321fe","started_at":"2025-01-01T00:00:05Z","sent_at":"2025-01-01T00:00:01Z","ended_at":"2025-01-01T00:00:08Z","status_code":200,"duration":7.8,"json_input":{"prompt":"cat astronaut"},"json_output":{"status":"ok"},"billable_units":1.5}],"next_cursor":"Mg==","has_more":true}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/serverless/usage":{"get":{"operationId":"serverlessGetUsage","summary":"Usage","x-mint":{"href":"/platform-apis/v1/serverless/usage","metadata":{"sidebarTitle":"Usage"}},"description":"\nTime-bucketed, aggregated serverless compute usage for **your own account** —\nthe machine-seconds your deployed serverless apps consumed, priced with your\nmachine prices and net of discounts. This matches the serverless portion of the\ndashboard usage view. Unlike `/v1/models/usage` (which reports model API\nendpoint calls), this reports the `sdk_billing_event` compute spend of the apps\nyou run on fal Serverless. Requires an `ADMIN`-scoped API key (this endpoint\nreturns billing and usage data, which the standard `API` key scope does not\ninclude); results are always scoped to the apps you own.\n\n**Filtering by app:**\n- `app` — exact match on one or more app names (comma-separated or repeated,\n up to 50): `?app=my-app-dev,my-app-prod`. Use the value exactly as it appears\n in the response `app` field.\n- `search` — case-insensitive substring match on the app name, for when you\n know the name but not the exact environment/version suffix: `?search=my-app`\n returns every `my-app*` variant.\n- Provide both to AND them. Omit both to return every app you own — useful for\n discovering the exact app names to filter on.\n\n**Expansions:**\n- `time_series`: usage grouped into time buckets (default)\n- `summary`: a single aggregate row per app × machine type across the window\n\n**Notes:**\n- Each row is machine-seconds (`unit` is always `\"second\"`); surge and\n non-surge usage of the same app/machine come back as separate rows\n (`is_surge`), so sum across them for a per-app total.\n- Time-series `bucket` timestamps are returned in the `timezone` you request\n (ISO 8601 with offset, e.g. `2025-01-15T00:00:00-05:00`), which also controls\n how usage is grouped into buckets.\n\n**Common Use Cases:**\n- Track your serverless apps' compute consumption and cost over time\n- Break down spend per app, environment, and machine type\n- Export usage to your own billing/observability tooling\n ","tags":["Serverless","Usage"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter to one or more serverless apps, matched exactly against the `app` value in the response (deployed name, owner prefix stripped). Accepts a comma-separated list or repeated parameter (1-50). For partial/name-only matching use `search`.","example":["autohdr-raw-to-jpg-dev"]},"required":false,"description":"Filter to one or more serverless apps, matched exactly against the `app` value in the response (deployed name, owner prefix stripped). Accepts a comma-separated list or repeated parameter (1-50). For partial/name-only matching use `search`.","name":"app","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Case-insensitive substring match on the app name — returns every app whose name contains this term (e.g. `search=autohdr` matches all `autohdr-*` apps across environments). Combined with `app` via AND when both are given.","example":"autohdr-raw-to-jpg"},"required":false,"description":"Case-insensitive substring match on the app name — returns every app whose name contains this term (e.g. `search=autohdr` matches all `autohdr-*` apps across environments). Combined with `app` via AND when both are given.","name":"search","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["time_series"],"description":"Data to include in the response. Use 'time_series' for time-bucketed data and 'summary' for aggregate statistics across the entire window. At least one is required.","example":["time_series","summary"]},"required":false,"description":"Data to include in the response. Use 'time_series' for time-bucketed data and 'summary' for aggregate statistics across the entire window. At least one is required.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Usage data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"time_series":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"Time bucket timestamp in user's timezone with offset (ISO8601 datetime)"},"results":{"type":"array","items":{"type":"object","properties":{"app":{"type":["string","null"],"description":"Deployed serverless app name (the billing owner prefix is stripped, e.g. 'autohdr-raw-to-jpg-dev'). May include an environment/version suffix. Null for line items without an app attribution."},"environment":{"type":["string","null"],"description":"Deployment environment of the app (e.g., 'production') when present on the billing line item, null otherwise."},"machine_type":{"type":"string","description":"Machine type the usage ran on (e.g., 'GPU-H100', 'L')"},"unit":{"type":"string","description":"The billing unit — always 'second' (machine-seconds)"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit"},"unit_price":{"type":"number","minimum":0,"description":"Per-second price for this machine type, including any customer-specific machine pricing"},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price, net of discounts)"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"},"is_surge":{"type":"boolean","description":"Whether this usage was billed at surge pricing. Surge and non-surge usage of the same machine type appear as separate rows."}},"required":["app","environment","machine_type","unit","quantity","unit_price","cost","currency","is_surge"],"description":"Serverless compute usage line item with billing details"},"description":"Usage records for this time bucket"}},"required":["bucket","results"],"description":"Time bucket with grouped serverless usage records"},"description":"Time series usage data grouped by time bucket (when expand includes 'time_series')."},"summary":{"type":"array","items":{"type":"object","properties":{"app":{"type":["string","null"],"description":"Deployed serverless app name (the billing owner prefix is stripped, e.g. 'autohdr-raw-to-jpg-dev'). May include an environment/version suffix. Null for line items without an app attribution."},"environment":{"type":["string","null"],"description":"Deployment environment of the app (e.g., 'production') when present on the billing line item, null otherwise."},"machine_type":{"type":"string","description":"Machine type the usage ran on (e.g., 'GPU-H100', 'L')"},"unit":{"type":"string","description":"The billing unit — always 'second' (machine-seconds)"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit"},"unit_price":{"type":"number","minimum":0,"description":"Per-second price for this machine type, including any customer-specific machine pricing"},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price, net of discounts)"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')"},"is_surge":{"type":"boolean","description":"Whether this usage was billed at surge pricing. Surge and non-surge usage of the same machine type appear as separate rows."}},"required":["app","environment","machine_type","unit","quantity","unit_price","cost","currency","is_surge"],"description":"Aggregate usage statistics for the entire date range"},"description":"Aggregate statistics (when expand includes 'summary')"}},"required":["next_cursor","has_more"],"description":"Response containing serverless usage data with pagination support"},"example":{"time_series":[{"bucket":"2025-01-15T00:00:00-05:00","results":[{"app":"my-app-prod","environment":null,"machine_type":"GPU-H100","unit":"second","quantity":1200,"unit_price":0.00099,"cost":1.188,"currency":"USD","is_surge":false}]}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/compute/instances":{"get":{"operationId":"listComputeInstances","summary":"List Compute Instances","x-mint":{"href":"/platform-apis/v1/compute/instances/list","metadata":{"sidebarTitle":"List Compute Instances"}},"description":"Returns a list of all compute instances belonging to the authenticated user's workspace.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n\n**Key Features:**\n- View all instances regardless of status\n- Includes instance configuration, region, and current status\n- Paginated results for large instance lists\n\n**Common Use Cases:**\n- Monitor all active compute resources\n- Check instance status and availability\n- Audit compute resource usage\n- Build compute management dashboards\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.","tags":["Compute"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"}],"responses":{"200":{"description":"Successfully retrieved compute instances","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"instances":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the compute instance","example":"inst_abc123xyz"},"instance_type":{"type":"string","enum":["gpu_8x_h100_sxm5","gpu_1x_h100_sxm5"],"description":"Type of compute instance (GPU configuration)","example":"gpu_1x_h100_sxm5"},"region":{"type":"string","enum":["us-west","us-central","us-east","eu-north","eu-west","other"],"description":"Geographical region where the instance is located","example":"us-west"},"sector":{"type":"string","enum":["sector_1","sector_2","sector_3"],"description":"Sector identifier for instance placement within the region (if applicable)","example":"sector_1"},"ip":{"type":"string","description":"IP address of the instance (available when instance is ready)","example":"203.0.113.42"},"status":{"type":"string","enum":["ready","init","pending","provisioning","stopped","unknown"],"description":"Current operational status of the instance","example":"ready"},"creator_user_nickname":{"type":"string","description":"Nickname of the user who created this instance","example":"developer"}},"required":["id","instance_type","region","status"],"description":"Compute instance details including configuration, location, and status"},"description":"Array of compute instances belonging to the authenticated user"}},"required":["next_cursor","has_more","instances"],"description":"Response containing a list of compute instances with pagination support"},"example":{"instances":[{"id":"inst_abc123xyz","instance_type":"gpu_1x_h100_sxm5","region":"us-west","sector":"sector_1","ip":"203.0.113.42","status":"ready","creator_user_nickname":"developer"},{"id":"inst_def456uvw","instance_type":"gpu_8x_h100_sxm5","region":"us-east","status":"provisioning","creator_user_nickname":"developer"}],"next_cursor":null,"has_more":false}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"post":{"operationId":"createComputeInstance","summary":"Create Compute Instance","x-mint":{"href":"/platform-apis/v1/compute/instances/create","metadata":{"sidebarTitle":"Create Compute Instance"}},"description":"Creates a new compute instance with the specified configuration and SSH key.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n- Valid SSH public key required for instance access\n\n**Key Features:**\n- Create high-performance GPU instances\n- Specify sector for InfiniBand configuration (8x H100 only)\n- SSH key-based authentication\n- Automatic instance provisioning and region assignment\n- Idempotent creation with Idempotency-Key header (optional but recommended)\n\n**Common Use Cases:**\n- Spin up compute resources for ML training\n- Create GPU instances for inference workloads\n- Set up development environments with H100 GPUs\n- Deploy distributed training with InfiniBand networking\n\n**Instance Types:**\n- `gpu_8x_h100_sxm5`: 8x NVIDIA H100 GPUs (high-performance, supports sector configuration for InfiniBand)\n- `gpu_1x_h100_sxm5`: 1x NVIDIA H100 GPU (standard)\n\n**Idempotency:**\n- Optional Idempotency-Key header prevents duplicate instance creation on retries\n- Responses cached for 10 minutes per unique key\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.","tags":["Compute"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"instance_type":{"type":"string","enum":["gpu_8x_h100_sxm5","gpu_1x_h100_sxm5"],"description":"Type of compute instance to create","example":"gpu_1x_h100_sxm5"},"ssh_key":{"type":"string","minLength":1,"description":"SSH public key for accessing the instance (e.g., 'ssh-rsa AAAAB3...')","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC... user@host"},"sector":{"type":"string","enum":["sector_1","sector_2","sector_3"],"description":"Sector for InfiniBand configuration (only valid with gpu_8x_h100_sxm5)","example":"sector_1"}},"required":["instance_type","ssh_key"],"description":"Request body for creating a new compute instance with SSH access"},"example":{"instance_type":"gpu_8x_h100_sxm5","ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7Kl4... user@host","sector":"sector_1"}}}},"responses":{"201":{"description":"Compute instance created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the compute instance","example":"inst_abc123xyz"},"instance_type":{"type":"string","enum":["gpu_8x_h100_sxm5","gpu_1x_h100_sxm5"],"description":"Type of compute instance (GPU configuration)","example":"gpu_1x_h100_sxm5"},"region":{"type":"string","enum":["us-west","us-central","us-east","eu-north","eu-west","other"],"description":"Geographical region where the instance is located","example":"us-west"},"sector":{"type":"string","enum":["sector_1","sector_2","sector_3"],"description":"Sector identifier for instance placement within the region (if applicable)","example":"sector_1"},"ip":{"type":"string","description":"IP address of the instance (available when instance is ready)","example":"203.0.113.42"},"status":{"type":"string","enum":["ready","init","pending","provisioning","stopped","unknown"],"description":"Current operational status of the instance","example":"ready"},"creator_user_nickname":{"type":"string","description":"Nickname of the user who created this instance","example":"developer"}},"required":["id","instance_type","region","status"],"description":"Compute instance details including configuration, location, and status"},"example":{"id":"inst_abc123xyz","instance_type":"gpu_8x_h100_sxm5","region":"us-west","sector":"sector_1","status":"provisioning","creator_user_nickname":"developer"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/compute/instances/{id}":{"get":{"operationId":"getComputeInstance","summary":"Get Compute Instance","x-mint":{"href":"/platform-apis/v1/compute/instances/get","metadata":{"sidebarTitle":"Get Compute Instance"}},"description":"Retrieves detailed information about a specific compute instance by its ID.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n- Instance must belong to the authenticated user's workspace\n\n**Key Features:**\n- Get current instance status and configuration\n- Access instance IP address when available\n- View region and sector placement\n- Check creator information\n\n**Common Use Cases:**\n- Monitor specific instance status\n- Retrieve connection details (IP address)\n- Check instance readiness before use\n- Audit instance configuration\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.","tags":["Compute"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique identifier for the compute instance","example":"inst_abc123xyz"},"required":true,"description":"Unique identifier for the compute instance","name":"id","in":"path"}],"responses":{"200":{"description":"Successfully retrieved compute instance details","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the compute instance","example":"inst_abc123xyz"},"instance_type":{"type":"string","enum":["gpu_8x_h100_sxm5","gpu_1x_h100_sxm5"],"description":"Type of compute instance (GPU configuration)","example":"gpu_1x_h100_sxm5"},"region":{"type":"string","enum":["us-west","us-central","us-east","eu-north","eu-west","other"],"description":"Geographical region where the instance is located","example":"us-west"},"sector":{"type":"string","enum":["sector_1","sector_2","sector_3"],"description":"Sector identifier for instance placement within the region (if applicable)","example":"sector_1"},"ip":{"type":"string","description":"IP address of the instance (available when instance is ready)","example":"203.0.113.42"},"status":{"type":"string","enum":["ready","init","pending","provisioning","stopped","unknown"],"description":"Current operational status of the instance","example":"ready"},"creator_user_nickname":{"type":"string","description":"Nickname of the user who created this instance","example":"developer"}},"required":["id","instance_type","region","status"],"description":"Compute instance details including configuration, location, and status"},"example":{"id":"inst_abc123xyz","instance_type":"gpu_1x_h100_sxm5","region":"us-west","sector":"sector_1","ip":"203.0.113.42","status":"ready","creator_user_nickname":"developer"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"delete":{"operationId":"deleteComputeInstance","summary":"Delete Compute Instance","x-mint":{"href":"/platform-apis/v1/compute/instances/delete","metadata":{"sidebarTitle":"Delete Compute Instance"}},"description":"Deletes a specific compute instance by its ID. This action is irreversible.\n\n**Requirements:**\n- Requires compute permissions (extra_permissions.compute = true)\n- Authentication required via admin API key\n- Instance must belong to the authenticated user's workspace\n\n**Key Features:**\n- Permanently remove compute instances\n- Free up compute resources\n- Stop billing for the instance\n- Clean up unused resources\n\n**Important:**\n- This action cannot be undone\n- All data on the instance will be lost\n- Instance will be immediately terminated\n- Billing stops after deletion\n\n**Common Use Cases:**\n- Clean up completed workloads\n- Remove failed or stuck instances\n- Manage compute costs\n- Free up quota for new instances\n\nSee [fal.ai docs](https://docs.fal.ai/compute) for more details.","tags":["Compute"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique identifier for the compute instance","example":"inst_abc123xyz"},"required":true,"description":"Unique identifier for the compute instance","name":"id","in":"path"}],"responses":{"204":{"description":"Compute instance deleted successfully"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/keys":{"get":{"operationId":"listApiKeys","summary":"List API Keys","x-mint":{"href":"/platform-apis/v1/keys/list","metadata":{"sidebarTitle":"List API Keys"}},"description":"Returns a list of all API keys belonging to the authenticated user's workspace.\n\n**Requirements:**\n- Authentication required via admin API key\n\n**Key Features:**\n- View all API keys with their aliases and creation dates\n- Optionally expand to include creator information\n- Paginated results for workspaces with many keys\n\n**Expansion Options:**\n- `expand=creator_info`: Include creator_nickname and creator_email for each key\n\n**Common Use Cases:**\n- Audit existing API keys\n- Find keys by alias\n- Monitor key creation activity\n- Build key management interfaces","tags":["Keys"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Fields to expand in the response. Available: creator_info (includes creator_nickname and creator_email)","example":["creator_info"]},"required":false,"description":"Fields to expand in the response. Available: creator_info (includes creator_nickname and creator_email)","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Successfully retrieved API keys","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"keys":{"type":"array","items":{"type":"object","properties":{"key_id":{"type":"string","description":"Unique identifier for the API key","example":"abc123def456"},"alias":{"type":"string","description":"User-provided friendly name for the key","example":"Production Key"},"scope":{"type":"string","enum":["API"],"description":"Scope of the API key. Only API scope keys can be managed via this API.","example":"API"},"created_at":{"type":"string","description":"ISO8601 timestamp when the key was created","example":"2025-01-15T12:00:00Z"},"creator_nickname":{"type":"string","description":"Nickname of the user who created this key (when expanded)","example":"developer"},"creator_email":{"type":"string","description":"Email of the user who created this key (when expanded)","example":"developer@example.com"}},"required":["key_id","alias","scope","created_at"],"description":"API key information"},"description":"Array of API keys belonging to the authenticated user"}},"required":["next_cursor","has_more","keys"],"description":"Response containing a list of API keys with pagination support"},"example":{"keys":[{"key_id":"abc123def456","alias":"Production Key","scope":"API","created_at":"2025-01-15T12:00:00Z"},{"key_id":"xyz789ghi012","alias":"Development Key","scope":"API","created_at":"2025-01-10T09:30:00Z"}],"next_cursor":null,"has_more":false}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}},"post":{"operationId":"createApiKey","summary":"Create API Key","x-mint":{"href":"/platform-apis/v1/keys/create","metadata":{"sidebarTitle":"Create API Key"}},"description":"Creates a new API key with the specified alias.\n\n**Requirements:**\n- Authentication required via admin API key\n\n**Important Security Notice:**\nThe `key_secret` is only returned once at creation time. Store it securely immediately\nas it cannot be retrieved again. If lost, you must delete the key and create a new one.\n\n**Key Features:**\n- Create API keys programmatically without UI access\n- Assign meaningful aliases for key identification\n- Keys are immediately active upon creation\n\n**Common Use Cases:**\n- Programmatic key provisioning for CI/CD pipelines\n- Self-serve key generation for team members\n- Automated key rotation workflows\n- Integration with secret management systems","tags":["Keys"],"security":[{"adminApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alias":{"type":"string","minLength":1,"maxLength":255,"description":"Required friendly name for the API key","example":"Production Key"}},"required":["alias"],"description":"Request body for creating a new API key"},"example":{"alias":"Production Key"}}}},"responses":{"201":{"description":"API key created successfully. Store the key_secret securely - it will not be shown again.","content":{"application/json":{"schema":{"type":"object","properties":{"key_id":{"type":"string","description":"Unique identifier for the newly created API key","example":"abc123def456"},"key_secret":{"type":"string","description":"Secret portion of the API key. IMPORTANT: This is only returned once at creation time and cannot be retrieved again.","example":"sk_live_abc123..."},"key":{"type":"string","description":"Full API key in the format 'key_id:key_secret'. Use this value directly for API authorization. IMPORTANT: This is only returned once at creation time and cannot be retrieved again.","example":"abc123def456:sk_live_abc123..."}},"required":["key_id","key_secret","key"],"description":"Response containing the newly created API key credentials. The key_secret is only returned once."},"example":{"key_id":"abc123def456","key_secret":"sk_live_abc123def456xyz789","key":"abc123def456:sk_live_abc123def456xyz789"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/keys/{key_id}":{"delete":{"operationId":"deleteApiKey","summary":"Delete API Key","x-mint":{"href":"/platform-apis/v1/keys/delete","metadata":{"sidebarTitle":"Delete API Key"}},"description":"Deletes an API key by its ID. This action is irreversible.\n\n**Requirements:**\n- Authentication required via admin API key\n- Key must belong to the authenticated user's workspace\n\n**Key Features:**\n- Permanently revoke API key access\n- Idempotent operation (safe to retry)\n- Optional Idempotency-Key header for safe retries\n\n**Important:**\n- This action cannot be undone\n- Any applications using this key will immediately lose access\n- Returns 204 even if the key doesn't exist (idempotent behavior)\n\n**Common Use Cases:**\n- Revoke compromised keys\n- Clean up unused keys\n- Implement key rotation (delete old, create new)\n- Offboard team members","tags":["Keys"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique identifier of the API key to delete","example":"abc123def456"},"required":true,"description":"Unique identifier of the API key to delete","name":"key_id","in":"path"},{"schema":{"type":"string","description":"Optional idempotency key for safe request retries","example":"550e8400-e29b-41d4-a716-446655440000"},"required":false,"description":"Optional idempotency key for safe request retries","name":"Idempotency-Key","in":"header"}],"responses":{"204":{"description":"API key deleted successfully (or already deleted)"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/account/billing":{"get":{"operationId":"getAccountBilling","summary":"Account Billing","x-mint":{"href":"/platform-apis/v1/account/billing","metadata":{"sidebarTitle":"Account Billing"}},"description":"Returns billing information for the authenticated account. Use the `expand`\nparameter to include additional details.\n\n**Expandable Fields:**\n- `credits` — Current credit balance and currency\n\n**Common Use Cases:**\n- Monitor available credit balance programmatically\n- Display balance in custom dashboards","tags":["Account"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Data to include in the response. Use 'credits' to include current credit balance.","example":"credits"},"required":false,"description":"Data to include in the response. Use 'credits' to include current credit balance.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Account billing information retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","description":"Account username","example":"my-team"},"credits":{"type":"object","properties":{"current_balance":{"type":"number","minimum":0,"description":"Current credit balance available on the account","example":24.5},"currency":{"type":"string","description":"Currency code for the balance","example":"USD"}},"required":["current_balance","currency"],"description":"Credit balance details. Only present when 'credits' is included in expand parameter."}},"required":["username"],"description":"Account billing information with optional expanded details"},"example":{"username":"my-team","credits":{"current_balance":24.5,"currency":"USD"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/account/focus":{"get":{"operationId":"getFocusReport","summary":"FOCUS Report","x-mint":{"href":"/platform-apis/v1/account/focus","metadata":{"sidebarTitle":"FOCUS Report"}},"description":"\nReturns a FOCUS compliant billing report as a CSV download.\n\n> **Availability:** This endpoint is available to enterprise customers with FOCUS reports enabled. Contact your account team or support@fal.ai to request access.\n\nSupports two data sources:\n- **invoice**: Finalized invoice data for a billing month. Includes usage charges, credits, and taxes.\n- **estimate**: Real-time usage estimates for a date range. Pre-invoice data that may change once invoiced.\n\nThe report follows the [FinOps FOCUS specification](https://focus.finops.org/) for cloud billing data interoperability.\n\n**Invoice reports** default to the most recently available billing month.\n**Usage estimates** default to the last 24 hours, with a maximum 90-day lookback.\n ","tags":["Account"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["invoice","estimate"],"description":"Report source. 'invoice' returns finalized invoice data for a billing month. 'estimate' returns real-time usage estimates for a date range.","example":"invoice"},"required":true,"description":"Report source. 'invoice' returns finalized invoice data for a billing month. 'estimate' returns real-time usage estimates for a date range.","name":"source","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$","description":"Invoice billing month (YYYY-MM). The month the invoice was issued (e.g. '2025-02' for January charges). Used with source=invoice. Defaults to most recent available billing month.","example":"2025-02"},"required":false,"description":"Invoice billing month (YYYY-MM). The month the invoice was issued (e.g. '2025-02' for January charges). Used with source=invoice. Defaults to most recent available billing month.","name":"billing_month","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$","description":"Charge month (YYYY-MM). The month charges were incurred. Converted to billing_month by adding 1 month (billing in arrears). Alternative to billing_month. Used with source=invoice.","example":"2025-01"},"required":false,"description":"Charge month (YYYY-MM). The month charges were incurred. Converted to billing_month by adding 1 month (billing in arrears). Alternative to billing_month. Used with source=invoice.","name":"charge_month","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"}],"responses":{"200":{"description":"FOCUS compliant CSV report","content":{"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/account/model-access-controls":{"get":{"operationId":"getModelAccessControls","summary":"Model Access Controls Report","x-mint":{"href":"/platform-apis/v1/account/model-access-controls","metadata":{"sidebarTitle":"Model Access Controls"}},"description":"\nReturns the current model access controls for your organization as a CSV download.\n\n> **Availability:** This endpoint is available to enterprise customers with model access controls enabled. Contact your account team or support@fal.ai to request access.\n\nThe report includes each model's endpoint ID, title, category, enterprise readiness status, and the resolved UI and API access state (ALLOWED or BLOCKED).\n ","tags":["Account"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Model access controls CSV report","content":{"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/organization/teams":{"get":{"operationId":"getOrganizationTeams","summary":"Organization Teams","x-mint":{"href":"/platform-apis/v1/organization/teams","metadata":{"sidebarTitle":"Organization Teams"}},"description":"\nReturns the list of teams in your organization with their details.\n\n> **Availability:** This endpoint is available to enterprise customers with organizations enabled. Contact your account team or support@fal.ai to request access.\n\nMust be called with an admin API key on the organization's root team.\n\n**Key Features:**\n- List all teams within the organization\n- Identify the organization's root team via `is_org_root`\n- View team usernames and display names\n\nSee [fal.ai docs](https://docs.fal.ai) for more details.\n ","tags":["Organization"],"security":[{"adminApiKey":[]}],"responses":{"200":{"description":"Organization teams retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"teams":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","description":"Team username/identifier (unique within the organization)","example":"acme-corp"},"name":{"type":"string","description":"Human-readable display name of the team","example":"Acme Corporation"},"is_org_root":{"type":"boolean","description":"True if this is the root organization team; false for sub-teams","example":true},"created_at":{"type":"string","description":"Team creation timestamp in ISO8601 format","example":"2024-01-15T10:30:00Z"}},"required":["username","name","is_org_root","created_at"],"description":"Organization team details"},"description":"List of teams in the organization"}},"required":["teams"],"description":"Response containing organization team details"},"example":{"teams":[{"username":"acme-corp","name":"Acme Corporation","is_org_root":true,"created_at":"2024-01-15T10:30:00Z"},{"username":"acme-ml-team","name":"ML Research Team","is_org_root":false,"created_at":"2024-03-01T14:00:00Z"}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/organization/usage":{"get":{"operationId":"getOrganizationUsage","summary":"Organization Usage","x-mint":{"href":"/platform-apis/v1/organization/usage","metadata":{"sidebarTitle":"Organization Usage"}},"description":"\nReturns paginated usage records across all teams and product lines in your\norganization, with each record attributed to a specific team via the\n`username` field and a product line via the `product` field.\n\nCovers all three fal product lines:\n- `model_apis` — model API endpoint calls (e.g. `fal-ai/flux/dev`)\n- `serverless` — fal Serverless SDK billing\n- `compute` — fal Compute (raw instance time)\n\n> **Availability:** This endpoint is available to enterprise customers with organizations enabled. Contact your account team or support@fal.ai to request access.\n\nMust be called with an admin API key on the organization's root team.\n\n**Key Features:**\n- Organization-wide usage data across all teams and products\n- Filter by team (`team_username`), product line (`product`), endpoint, date range, and auth method\n- Per-team and per-product attribution on every usage record\n- Paginated time series and aggregate summary views\n\nSee [fal.ai docs](https://docs.fal.ai) for more details.\n ","tags":["Organization"],"security":[{"adminApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","example":50},"required":false,"description":"Maximum number of items to return. Actual maximum depends on query type and expansion parameters.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Pagination cursor from previous response. Encodes the page number.","example":"Mg=="},"required":false,"description":"Pagination cursor from previous response. Encodes the page number.","name":"cursor","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","example":"2025-01-01T00:00:00Z"},"required":false,"description":"Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}],"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","example":"2025-02-01T00:00:00Z"},"required":false,"description":"End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.","name":"end","in":"query"},{"schema":{"type":"string","default":"UTC","description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","example":"UTC"},"required":false,"description":"Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.","name":"timezone","in":"query"},{"schema":{"type":"string","enum":["minute","hour","day","week","month"],"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","example":"day"},"required":false,"description":"Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).","name":"timeframe","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true","description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","example":"true"},"required":false,"description":"Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.","name":"bound_to_timeframe","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","example":["fal-ai/flux/dev"]},"required":false,"description":"Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2","name":"endpoint_id","style":"form","explode":true,"in":"query"},{"schema":{"type":"string","description":"Filter by a specific team username within the organization. If not provided, returns usage across all teams.","example":"acme-ml-team"},"required":false,"description":"Filter by a specific team username within the organization. If not provided, returns usage across all teams.","name":"team_username","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Restrict results to one or more product lines. Accepts a comma-separated list or repeated parameter. Defaults to all three (model_apis, serverless, compute).","example":["model_apis","compute"]},"required":false,"description":"Restrict results to one or more product lines. Accepts a comma-separated list or repeated parameter. Defaults to all three (model_apis, serverless, compute).","name":"product","style":"form","explode":true,"in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["time_series"],"description":"Data to include in the response. Use 'time_series' for time-bucketed data, 'summary' for aggregate statistics, and 'auth_method' to include authentication method information. At least one of 'time_series' or 'summary' is required.","example":["time_series","auth_method"]},"required":false,"description":"Data to include in the response. Use 'time_series' for time-bucketed data, 'summary' for aggregate statistics, and 'auth_method' to include authentication method information. At least one of 'time_series' or 'summary' is required.","name":"expand","style":"form","explode":true,"in":"query"}],"responses":{"200":{"description":"Organization usage data retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Cursor for the next page of results, null if no more pages"},"has_more":{"type":"boolean","description":"Boolean indicating if more results are available (convenience field derived from next_cursor)"},"time_series":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"Time bucket timestamp in user's timezone with offset (ISO8601 datetime)","example":"2025-01-15T00:00:00-05:00"},"results":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","description":"Team username within the organization — identifies which team incurred this line item.","example":"acme-ml-team"},"product":{"type":"string","enum":["model_apis","serverless","compute"],"description":"Product line the usage belongs to: 'model_apis' (fal Model APIs — endpoint calls), 'serverless' (fal Serverless SDK billing), or 'compute' (fal Compute — raw instances).","example":"model_apis"},"endpoint_id":{"type":"string","description":"Identifier of the billed resource. For 'model_apis' this is the endpoint slug (e.g., 'fal-ai/flux/dev'); for 'serverless' it is the SDK billing line; for 'compute' it is the machine type line (e.g., 'type: gpu_1x_h100_sxm5 (my-app, prod)').","example":"fal-ai/flux/dev"},"unit":{"type":"string","description":"The billing unit (e.g., 'image', 'video', or a GPU/compute unit for some models)","example":"image"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit","example":4},"unit_price":{"type":"number","minimum":0,"description":"Unit price used to compute charges for this line item","example":0.1},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price)","example":0.4},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')","example":"USD"},"auth_method":{"type":"string","description":"Authentication method label resolved across the organization (e.g., 'my-key (owner: alice)', 'alice ', or 'None'). Only populated when 'auth_method' is included in the expand parameter. Falls back to the raw upstream label if the decoration service cannot resolve a row.","example":"production-key (owner: acme-ml-team)"}},"required":["username","product","endpoint_id","unit","quantity","unit_price","cost","currency"],"description":"Organization usage line item with team attribution"},"description":"Usage records for this time bucket"}},"required":["bucket","results"],"description":"Time bucket with grouped usage records"},"description":"Time series usage data grouped by time bucket (when expand includes 'time_series'). Each bucket contains all usage records for that time period."},"summary":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","description":"Team username within the organization — identifies which team incurred this line item.","example":"acme-ml-team"},"product":{"type":"string","enum":["model_apis","serverless","compute"],"description":"Product line the usage belongs to: 'model_apis' (fal Model APIs — endpoint calls), 'serverless' (fal Serverless SDK billing), or 'compute' (fal Compute — raw instances).","example":"model_apis"},"endpoint_id":{"type":"string","description":"Identifier of the billed resource. For 'model_apis' this is the endpoint slug (e.g., 'fal-ai/flux/dev'); for 'serverless' it is the SDK billing line; for 'compute' it is the machine type line (e.g., 'type: gpu_1x_h100_sxm5 (my-app, prod)').","example":"fal-ai/flux/dev"},"unit":{"type":"string","description":"The billing unit (e.g., 'image', 'video', or a GPU/compute unit for some models)","example":"image"},"quantity":{"type":"number","minimum":0,"description":"Quantity of usage in the specified billing unit","example":4},"unit_price":{"type":"number","minimum":0,"description":"Unit price used to compute charges for this line item","example":0.1},"cost":{"type":"number","minimum":0,"description":"Computed cost (quantity × unit_price)","example":0.4},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code (ISO 4217, e.g., 'USD')","example":"USD"},"auth_method":{"type":"string","description":"Authentication method label resolved across the organization (e.g., 'my-key (owner: alice)', 'alice ', or 'None'). Only populated when 'auth_method' is included in the expand parameter. Falls back to the raw upstream label if the decoration service cannot resolve a row.","example":"production-key (owner: acme-ml-team)"}},"required":["username","product","endpoint_id","unit","quantity","unit_price","cost","currency"],"description":"Aggregate organization usage statistics for the entire date range"},"description":"Aggregate statistics (when expand includes 'summary')"}},"required":["next_cursor","has_more"],"description":"Response containing organization usage data with pagination support"},"example":{"time_series":[{"bucket":"2025-01-15T00:00:00-05:00","results":[{"username":"acme-ml-team","product":"model_apis","endpoint_id":"fal-ai/flux/dev","unit":"image","quantity":4,"unit_price":0.1,"cost":0.4,"currency":"USD"},{"username":"acme-ml-team","product":"compute","endpoint_id":"type: gpu_1x_h100_sxm5 (my-app, production)","unit":"second","quantity":3600,"unit_price":0.001,"cost":3.6,"currency":"USD"}]}],"next_cursor":null,"has_more":false}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"validation_error","message":"Invalid request parameters"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Authentication required"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"authorization_error","message":"Access denied"}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"not_found","message":"Resource not found"}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}},"/meta":{"get":{"operationId":"getMeta","summary":"Get platform metadata","x-mint":{"href":"/platform-apis/v1/meta","metadata":{"sidebarTitle":"Get Platform Metadata"}},"description":"\nReturns platform metadata including webhook IP ranges for allowlisting.\n\nIf your infrastructure requires allowlisting IP addresses for incoming webhook\nrequests, this endpoint provides the current list of IP ranges used by fal.ai\nwebhooks in CIDR notation.\n ","tags":["Meta"],"responses":{"200":{"description":"Platform metadata","content":{"application/json":{"schema":{"type":"object","properties":{"webhook_ip_ranges":{"type":"array","items":{"type":"string"},"description":"IP address ranges (CIDR notation) used by fal.ai webhooks"}},"required":["webhook_ip_ranges"],"description":"Platform metadata including webhook IP ranges for allowlisting","example":{"webhook_ip_ranges":["34.123.59.101/32","34.135.41.243/32","35.239.83.87/32","104.198.204.37/32","34.56.20.205/32","34.170.94.127/32","35.224.184.236/32","136.114.56.197/32","34.29.37.237/32","35.225.160.28/32","34.56.205.145/32","34.59.170.72/32","34.10.147.45/32","104.198.64.245/32","34.9.1.255/32"]}},"example":{"webhook_ip_ranges":["34.123.59.101/32","34.135.41.243/32","35.239.83.87/32","104.198.204.37/32","34.56.20.205/32","34.170.94.127/32","35.224.184.236/32","136.114.56.197/32","34.29.37.237/32","35.225.160.28/32","34.56.205.145/32","34.59.170.72/32","34.10.147.45/32","104.198.64.245/32","34.9.1.255/32"]}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"rate_limited","message":"Rate limit exceeded"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["authorization_error","validation_error","not_found","rate_limited","server_error","not_implemented"],"description":"The category of error that occurred"},"message":{"type":"string","description":"Human-readable error message"},"docs_url":{"type":"string","format":"uri","description":"Link to relevant documentation"},"request_id":{"type":"string","description":"Unique request identifier for debugging"}},"required":["type","message"],"description":"Error details"}},"required":["error"],"description":"Standard error response format"},"example":{"error":{"type":"server_error","message":"An unexpected error occurred"}}}}}}}}},"webhooks":{}}