From e1761fdc7ae75422d3273638a7accfc37e3b4eff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 30 Sep 2026 03:39:37 +0000 Subject: [PATCH] feat: Updated OpenAPI spec --- .../Shotstack.EditClient.PostRender.g.cs | 6 +- .../Shotstack.IEditClient.PostRender.g.cs | 6 +- ...tack.IIngestClient.GetUploadSignedUrl.g.cs | 4 +- .../Shotstack.IIngestClient.PostSource.g.cs | 4 + ...stack.IServeClient.GetAssetByRenderId.g.cs | 4 +- ...Shotstack.IServeClient.PostServeAsset.g.cs | 2 + .../Generated/Shotstack.IServeClient.g.cs | 2 +- .../Generated/Shotstack.IShotstackClient.g.cs | 2 +- ...hotstack.Ingest.JsonSerializerContext.g.cs | 20 + ...stack.IngestClient.GetUploadSignedUrl.g.cs | 4 +- .../Shotstack.IngestClient.PostSource.g.cs | 4 + .../Shotstack.JsonSerializerContext.g.cs | 16 + ...ck.Models.AkamaiNetStorageDestination.g.cs | 2 +- ...tstack.Models.AssetResponseAttributes.g.cs | 4 +- .../Shotstack.Models.Destinations.g.cs | 6 +- .../Generated/Shotstack.Models.Edit.g.cs | 2 +- .../Generated/Shotstack.Models.EditDisk.g.cs | 2 +- .../Shotstack.Models.ImageAsset.g.cs | 6 +- .../Shotstack.Models.MuxDestination.g.cs | 16 +- ...hotstack.Models.MuxDestinationOptions.g.cs | 4 + .../Generated/Shotstack.Models.Output.g.cs | 2 + .../Generated/Shotstack.Models.Source.g.cs | 2 + .../Shotstack.Models.TiktokDestination.g.cs | 14 +- ...stack.Models.TiktokDestinationOptions.g.cs | 7 + .../Generated/Shotstack.Models.Transfer.g.cs | 2 + ...Shotstack.Serve.JsonSerializerContext.g.cs | 20 + ...tstack.ServeClient.GetAssetByRenderId.g.cs | 4 +- .../Shotstack.ServeClient.PostServeAsset.g.cs | 2 + .../Generated/Shotstack.ServeClient.g.cs | 2 +- .../Generated/Shotstack.ShotstackClient.g.cs | 2 +- .../Generated/autosdk.generated-examples.json | 54 +- src/libs/Shotstack/openapi.json | 482 ++++++++++++++---- 32 files changed, 551 insertions(+), 158 deletions(-) diff --git a/src/libs/Shotstack/Generated/Shotstack.EditClient.PostRender.g.cs b/src/libs/Shotstack/Generated/Shotstack.EditClient.PostRender.g.cs index cdb6910..e7b3b77 100644 --- a/src/libs/Shotstack/Generated/Shotstack.EditClient.PostRender.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.EditClient.PostRender.g.cs @@ -54,7 +54,7 @@ partial void ProcessPostRenderResponseContent( /// 5. **Output**: The final media file is generated and stored
/// **Video Preprocessing:**
/// Video assets undergo automatic preprocessing to ensure compatibility. You can force
- /// preprocessing by setting `"transcode": true` on video assets. See [Preprocessing](#preprocessing)
+ /// preprocessing by setting `"transcode": true` on video assets. See [VideoAsset](#tocs_videoasset)
/// for more details.
/// **Base URL:** <a href="#">https://api.shotstack.io/edit/{version}</a> /// @@ -88,7 +88,7 @@ partial void ProcessPostRenderResponseContent( /// 5. **Output**: The final media file is generated and stored
/// **Video Preprocessing:**
/// Video assets undergo automatic preprocessing to ensure compatibility. You can force
- /// preprocessing by setting `"transcode": true` on video assets. See [Preprocessing](#preprocessing)
+ /// preprocessing by setting `"transcode": true` on video assets. See [VideoAsset](#tocs_videoasset)
/// for more details.
/// **Base URL:** <a href="#">https://api.shotstack.io/edit/{version}</a> /// @@ -453,7 +453,7 @@ partial void ProcessPostRenderResponseContent( /// 5. **Output**: The final media file is generated and stored
/// **Video Preprocessing:**
/// Video assets undergo automatic preprocessing to ensure compatibility. You can force
- /// preprocessing by setting `"transcode": true` on video assets. See [Preprocessing](#preprocessing)
+ /// preprocessing by setting `"transcode": true` on video assets. See [VideoAsset](#tocs_videoasset)
/// for more details.
/// **Base URL:** <a href="#">https://api.shotstack.io/edit/{version}</a> /// diff --git a/src/libs/Shotstack/Generated/Shotstack.IEditClient.PostRender.g.cs b/src/libs/Shotstack/Generated/Shotstack.IEditClient.PostRender.g.cs index a15739b..352241e 100644 --- a/src/libs/Shotstack/Generated/Shotstack.IEditClient.PostRender.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.IEditClient.PostRender.g.cs @@ -17,7 +17,7 @@ public partial interface IEditClient /// 5. **Output**: The final media file is generated and stored
/// **Video Preprocessing:**
/// Video assets undergo automatic preprocessing to ensure compatibility. You can force
- /// preprocessing by setting `"transcode": true` on video assets. See [Preprocessing](#preprocessing)
+ /// preprocessing by setting `"transcode": true` on video assets. See [VideoAsset](#tocs_videoasset)
/// for more details.
/// **Base URL:** <a href="#">https://api.shotstack.io/edit/{version}</a> /// @@ -41,7 +41,7 @@ public partial interface IEditClient /// 5. **Output**: The final media file is generated and stored
/// **Video Preprocessing:**
/// Video assets undergo automatic preprocessing to ensure compatibility. You can force
- /// preprocessing by setting `"transcode": true` on video assets. See [Preprocessing](#preprocessing)
+ /// preprocessing by setting `"transcode": true` on video assets. See [VideoAsset](#tocs_videoasset)
/// for more details.
/// **Base URL:** <a href="#">https://api.shotstack.io/edit/{version}</a> /// @@ -65,7 +65,7 @@ public partial interface IEditClient /// 5. **Output**: The final media file is generated and stored
/// **Video Preprocessing:**
/// Video assets undergo automatic preprocessing to ensure compatibility. You can force
- /// preprocessing by setting `"transcode": true` on video assets. See [Preprocessing](#preprocessing)
+ /// preprocessing by setting `"transcode": true` on video assets. See [VideoAsset](#tocs_videoasset)
/// for more details.
/// **Base URL:** <a href="#">https://api.shotstack.io/edit/{version}</a> /// diff --git a/src/libs/Shotstack/Generated/Shotstack.IIngestClient.GetUploadSignedUrl.g.cs b/src/libs/Shotstack/Generated/Shotstack.IIngestClient.GetUploadSignedUrl.g.cs index 57894bb..d4d5786 100644 --- a/src/libs/Shotstack/Generated/Shotstack.IIngestClient.GetUploadSignedUrl.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.IIngestClient.GetUploadSignedUrl.g.cs @@ -8,7 +8,7 @@ public partial interface IIngestClient /// Direct Upload
/// Request a signed URL to upload a file to. The response returns a signed URL that you use to upload the file to.
/// The signed URL looks similar to:
- /// https://shotstack-ingest-api-stage-sources.s3.ap-southeast-2.amazonaws.com/5ca6hu7s9k/zzytey4v-32km-kq1z-aftr-3kcuqi0brad2/source?AWSAccessKeyId=ASIAWJV7UWDMGTZLHTXP&Expires=1677209777&Signature=PKR4dGDDdOuMTAQmDASzLGmLOeo%3D&x-amz-acl=public-read&x-amz-security-token=IQoJb3JpZ2luX2VjEGMaDmFwLX......56osBGByztm7WZdbmXzO09KR
+ /// `https://shotstack-ingest-api-stage-sources.s3.ap-southeast-2.amazonaws.com/5ca6hu7s9k/zzytey4v-32km-kq1z-aftr-3kcuqi0brad2/source?AWSAccessKeyId=ASIAWJV7UWDMGTZLHTXP&Expires=1677209777&Signature=PKR4dGDDdOuMTAQmDASzLGmLOeo%3D&x-amz-acl=public-read&x-amz-security-token=IQoJb3JpZ2luX2VjEGMaDmFwLX......56osBGByztm7WZdbmXzO09KR`
/// In a separate API call, use this signed URL to send a PUT request with the binary file. Using cURL you can use
/// a command like:
///
@@ -30,7 +30,7 @@ public partial interface IIngestClient /// Direct Upload
/// Request a signed URL to upload a file to. The response returns a signed URL that you use to upload the file to.
/// The signed URL looks similar to:
- /// https://shotstack-ingest-api-stage-sources.s3.ap-southeast-2.amazonaws.com/5ca6hu7s9k/zzytey4v-32km-kq1z-aftr-3kcuqi0brad2/source?AWSAccessKeyId=ASIAWJV7UWDMGTZLHTXP&Expires=1677209777&Signature=PKR4dGDDdOuMTAQmDASzLGmLOeo%3D&x-amz-acl=public-read&x-amz-security-token=IQoJb3JpZ2luX2VjEGMaDmFwLX......56osBGByztm7WZdbmXzO09KR
+ /// `https://shotstack-ingest-api-stage-sources.s3.ap-southeast-2.amazonaws.com/5ca6hu7s9k/zzytey4v-32km-kq1z-aftr-3kcuqi0brad2/source?AWSAccessKeyId=ASIAWJV7UWDMGTZLHTXP&Expires=1677209777&Signature=PKR4dGDDdOuMTAQmDASzLGmLOeo%3D&x-amz-acl=public-read&x-amz-security-token=IQoJb3JpZ2luX2VjEGMaDmFwLX......56osBGByztm7WZdbmXzO09KR`
/// In a separate API call, use this signed URL to send a PUT request with the binary file. Using cURL you can use
/// a command like:
///
diff --git a/src/libs/Shotstack/Generated/Shotstack.IIngestClient.PostSource.g.cs b/src/libs/Shotstack/Generated/Shotstack.IIngestClient.PostSource.g.cs index 22d3ef5..62ec891 100644 --- a/src/libs/Shotstack/Generated/Shotstack.IIngestClient.PostSource.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.IIngestClient.PostSource.g.cs @@ -1,5 +1,7 @@ #nullable enable +#pragma warning disable CS0618 // Type or member is obsolete + namespace Shotstack { public partial interface IIngestClient @@ -61,7 +63,9 @@ public partial interface IIngestClient global::System.Threading.Tasks.Task PostSourceAsync( string? url = default, global::Shotstack.Outputs? outputs = default, +#pragma warning disable CS0618 // Type or member is obsolete global::Shotstack.Destinations? destinations = default, +#pragma warning disable CS0618 // Type or member is obsolete string? callback = default, global::Shotstack.AutoSDKRequestOptions? requestOptions = default, global::System.Threading.CancellationToken cancellationToken = default); diff --git a/src/libs/Shotstack/Generated/Shotstack.IServeClient.GetAssetByRenderId.g.cs b/src/libs/Shotstack/Generated/Shotstack.IServeClient.GetAssetByRenderId.g.cs index b6db77d..e798ea7 100644 --- a/src/libs/Shotstack/Generated/Shotstack.IServeClient.GetAssetByRenderId.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.IServeClient.GetAssetByRenderId.g.cs @@ -7,7 +7,7 @@ public partial interface IServeClient /// /// Get Asset by Render ID
/// A render may generate more than one file, such as a video, thumbnail and poster image. When the assets are
- /// created the only known id is the render id returned by the original [render request](#render-video), status
+ /// created the only known id is the render id returned by the original [render request](#render-asset), status
/// request or webhook. This endpoint lets you look up one or more assets by the render id.
/// **Base URL:** <a href="#">https://api.shotstack.io/serve/{version}</a> ///
@@ -22,7 +22,7 @@ public partial interface IServeClient /// /// Get Asset by Render ID
/// A render may generate more than one file, such as a video, thumbnail and poster image. When the assets are
- /// created the only known id is the render id returned by the original [render request](#render-video), status
+ /// created the only known id is the render id returned by the original [render request](#render-asset), status
/// request or webhook. This endpoint lets you look up one or more assets by the render id.
/// **Base URL:** <a href="#">https://api.shotstack.io/serve/{version}</a> ///
diff --git a/src/libs/Shotstack/Generated/Shotstack.IServeClient.PostServeAsset.g.cs b/src/libs/Shotstack/Generated/Shotstack.IServeClient.PostServeAsset.g.cs index adb1d36..f1e240b 100644 --- a/src/libs/Shotstack/Generated/Shotstack.IServeClient.PostServeAsset.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.IServeClient.PostServeAsset.g.cs @@ -1,5 +1,7 @@ #nullable enable +#pragma warning disable CS0618 // Type or member is obsolete + namespace Shotstack { public partial interface IServeClient diff --git a/src/libs/Shotstack/Generated/Shotstack.IServeClient.g.cs b/src/libs/Shotstack/Generated/Shotstack.IServeClient.g.cs index 9bc2ade..3e35f1a 100644 --- a/src/libs/Shotstack/Generated/Shotstack.IServeClient.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.IServeClient.g.cs @@ -4,7 +4,7 @@ namespace Shotstack { /// - /// Assets generated by the Edit API or uploaded via the Ingest API are sent to the Serve API. The Serve API includes a simple hosting service with a CDN or you can send assets to third party services like AWS S3 or Mux. The Serve API includes endpoints to look up assets, where they are hosted and their status.
+ /// Assets generated by the Edit API or uploaded via the Ingest API are sent to the Serve API. The Serve API includes a simple hosting service with a CDN or you can send assets to third party services like AWS S3 or Google Cloud Storage. The Serve API includes endpoints to look up assets, where they are hosted and their status.
/// If no httpClient is provided, a new one will be created.
/// If no baseUri is provided, the default baseUri from OpenAPI spec will be used. ///
diff --git a/src/libs/Shotstack/Generated/Shotstack.IShotstackClient.g.cs b/src/libs/Shotstack/Generated/Shotstack.IShotstackClient.g.cs index b547ac0..f3e0082 100644 --- a/src/libs/Shotstack/Generated/Shotstack.IShotstackClient.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.IShotstackClient.g.cs @@ -70,7 +70,7 @@ public partial interface IShotstackClient : global::System.IDisposable public IngestClient Ingest { get; } /// - /// Assets generated by the Edit API or uploaded via the Ingest API are sent to the Serve API. The Serve API includes a simple hosting service with a CDN or you can send assets to third party services like AWS S3 or Mux. The Serve API includes endpoints to look up assets, where they are hosted and their status. + /// Assets generated by the Edit API or uploaded via the Ingest API are sent to the Serve API. The Serve API includes a simple hosting service with a CDN or you can send assets to third party services like AWS S3 or Google Cloud Storage. The Serve API includes endpoints to look up assets, where they are hosted and their status. /// public ServeClient Serve { get; } diff --git a/src/libs/Shotstack/Generated/Shotstack.Ingest.JsonSerializerContext.g.cs b/src/libs/Shotstack/Generated/Shotstack.Ingest.JsonSerializerContext.g.cs index fd7f613..f94669a 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Ingest.JsonSerializerContext.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Ingest.JsonSerializerContext.g.cs @@ -21,18 +21,28 @@ namespace Shotstack [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.Size))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.Destinations), TypeInfoPropertyName = "Destinations2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.ShotstackDestination))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestination))] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.S3Destination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleCloudStorageDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleDriveDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.VimeoDestination))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestination))] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AkamaiNetStorageDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AzureBlobStorageDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.DestinationsDiscriminator))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestinationOptions))] + #pragma warning restore CS0618 + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] + #pragma warning restore CS0618 + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestinationOptionsPlaybackPolicyItem), TypeInfoPropertyName = "MuxDestinationOptionsPlaybackPolicyItem2")] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.S3DestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleCloudStorageDestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleDriveDestinationOptions))] @@ -75,8 +85,12 @@ namespace Shotstack [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.IngestErrorResponse))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.IngestErrorResponseData))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestinationOptions))] + #pragma warning restore CS0618 + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestinationOptionsPrivacyLevel), TypeInfoPropertyName = "TiktokDestinationOptionsPrivacyLevel2")] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AkamaiNetStorageDestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AzureBlobStorageDestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(bool?))] @@ -84,7 +98,9 @@ namespace Shotstack [global::System.Text.Json.Serialization.JsonSerializable(typeof(float?))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(int?))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.Destinations?), TypeInfoPropertyName = "NullableDestinations2")] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestinationOptionsPlaybackPolicyItem?), TypeInfoPropertyName = "NullableMuxDestinationOptionsPlaybackPolicyItem2")] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.VimeoDestinationPrivacyOptionsView?), TypeInfoPropertyName = "NullableVimeoDestinationPrivacyOptionsView2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.VimeoDestinationPrivacyOptionsEmbed?), TypeInfoPropertyName = "NullableVimeoDestinationPrivacyOptionsEmbed2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.VimeoDestinationPrivacyOptionsComments?), TypeInfoPropertyName = "NullableVimeoDestinationPrivacyOptionsComments2")] @@ -96,8 +112,12 @@ namespace Shotstack [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.DolbyEnhancementOptionsPreset?), TypeInfoPropertyName = "NullableDolbyEnhancementOptionsPreset2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.SourceResponseAttributesStatus?), TypeInfoPropertyName = "NullableSourceResponseAttributesStatus2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.RenditionResponseAttributesStatus?), TypeInfoPropertyName = "NullableRenditionResponseAttributesStatus2")] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestinationOptionsPrivacyLevel?), TypeInfoPropertyName = "NullableTiktokDestinationOptionsPrivacyLevel2")] + #pragma warning restore CS0618 + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + #pragma warning restore CS0618 [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))] diff --git a/src/libs/Shotstack/Generated/Shotstack.IngestClient.GetUploadSignedUrl.g.cs b/src/libs/Shotstack/Generated/Shotstack.IngestClient.GetUploadSignedUrl.g.cs index 5bf527e..3c48e8e 100644 --- a/src/libs/Shotstack/Generated/Shotstack.IngestClient.GetUploadSignedUrl.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.IngestClient.GetUploadSignedUrl.g.cs @@ -43,7 +43,7 @@ partial void ProcessGetUploadSignedUrlResponseContent( /// Direct Upload
/// Request a signed URL to upload a file to. The response returns a signed URL that you use to upload the file to.
/// The signed URL looks similar to:
- /// https://shotstack-ingest-api-stage-sources.s3.ap-southeast-2.amazonaws.com/5ca6hu7s9k/zzytey4v-32km-kq1z-aftr-3kcuqi0brad2/source?AWSAccessKeyId=ASIAWJV7UWDMGTZLHTXP&Expires=1677209777&Signature=PKR4dGDDdOuMTAQmDASzLGmLOeo%3D&x-amz-acl=public-read&x-amz-security-token=IQoJb3JpZ2luX2VjEGMaDmFwLX......56osBGByztm7WZdbmXzO09KR
+ /// `https://shotstack-ingest-api-stage-sources.s3.ap-southeast-2.amazonaws.com/5ca6hu7s9k/zzytey4v-32km-kq1z-aftr-3kcuqi0brad2/source?AWSAccessKeyId=ASIAWJV7UWDMGTZLHTXP&Expires=1677209777&Signature=PKR4dGDDdOuMTAQmDASzLGmLOeo%3D&x-amz-acl=public-read&x-amz-security-token=IQoJb3JpZ2luX2VjEGMaDmFwLX......56osBGByztm7WZdbmXzO09KR`
/// In a separate API call, use this signed URL to send a PUT request with the binary file. Using cURL you can use
/// a command like:
///
@@ -73,7 +73,7 @@ partial void ProcessGetUploadSignedUrlResponseContent( /// Direct Upload
/// Request a signed URL to upload a file to. The response returns a signed URL that you use to upload the file to.
/// The signed URL looks similar to:
- /// https://shotstack-ingest-api-stage-sources.s3.ap-southeast-2.amazonaws.com/5ca6hu7s9k/zzytey4v-32km-kq1z-aftr-3kcuqi0brad2/source?AWSAccessKeyId=ASIAWJV7UWDMGTZLHTXP&Expires=1677209777&Signature=PKR4dGDDdOuMTAQmDASzLGmLOeo%3D&x-amz-acl=public-read&x-amz-security-token=IQoJb3JpZ2luX2VjEGMaDmFwLX......56osBGByztm7WZdbmXzO09KR
+ /// `https://shotstack-ingest-api-stage-sources.s3.ap-southeast-2.amazonaws.com/5ca6hu7s9k/zzytey4v-32km-kq1z-aftr-3kcuqi0brad2/source?AWSAccessKeyId=ASIAWJV7UWDMGTZLHTXP&Expires=1677209777&Signature=PKR4dGDDdOuMTAQmDASzLGmLOeo%3D&x-amz-acl=public-read&x-amz-security-token=IQoJb3JpZ2luX2VjEGMaDmFwLX......56osBGByztm7WZdbmXzO09KR`
/// In a separate API call, use this signed URL to send a PUT request with the binary file. Using cURL you can use
/// a command like:
///
diff --git a/src/libs/Shotstack/Generated/Shotstack.IngestClient.PostSource.g.cs b/src/libs/Shotstack/Generated/Shotstack.IngestClient.PostSource.g.cs index d2d9569..7f39076 100644 --- a/src/libs/Shotstack/Generated/Shotstack.IngestClient.PostSource.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.IngestClient.PostSource.g.cs @@ -1,6 +1,8 @@ #nullable enable +#pragma warning disable CS0618 // Type or member is obsolete + namespace Shotstack { public partial class IngestClient @@ -486,7 +488,9 @@ partial void ProcessPostSourceResponseContent( public async global::System.Threading.Tasks.Task PostSourceAsync( string? url = default, global::Shotstack.Outputs? outputs = default, +#pragma warning disable CS0618 // Type or member is obsolete global::Shotstack.Destinations? destinations = default, +#pragma warning disable CS0618 // Type or member is obsolete string? callback = default, global::Shotstack.AutoSDKRequestOptions? requestOptions = default, global::System.Threading.CancellationToken cancellationToken = default) diff --git a/src/libs/Shotstack/Generated/Shotstack.JsonSerializerContext.g.cs b/src/libs/Shotstack/Generated/Shotstack.JsonSerializerContext.g.cs index 876a338..97f70cc 100644 --- a/src/libs/Shotstack/Generated/Shotstack.JsonSerializerContext.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.JsonSerializerContext.g.cs @@ -585,18 +585,28 @@ namespace Shotstack [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.Destinations), TypeInfoPropertyName = "Destinations2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.ShotstackDestination))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestination))] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.S3Destination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleCloudStorageDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleDriveDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.VimeoDestination))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestination))] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AkamaiNetStorageDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AzureBlobStorageDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.DestinationsDiscriminator))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestinationOptions))] + #pragma warning restore CS0618 + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] + #pragma warning restore CS0618 + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestinationOptionsPlaybackPolicyItem), TypeInfoPropertyName = "MuxDestinationOptionsPlaybackPolicyItem2")] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.S3DestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleCloudStorageDestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleDriveDestinationOptions))] @@ -688,8 +698,12 @@ namespace Shotstack [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.RichCaptionFontStyle), TypeInfoPropertyName = "RichCaptionFontStyle2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.RichCaptionStyleTextTransform), TypeInfoPropertyName = "RichCaptionStyleTextTransform2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.RichCaptionStyleTextDecoration), TypeInfoPropertyName = "RichCaptionStyleTextDecoration2")] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestinationOptions))] + #pragma warning restore CS0618 + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestinationOptionsPrivacyLevel), TypeInfoPropertyName = "TiktokDestinationOptionsPrivacyLevel2")] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AkamaiNetStorageDestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AzureBlobStorageDestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.PostGenerateRequest))] @@ -703,7 +717,9 @@ namespace Shotstack [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.OneOf>))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + #pragma warning restore CS0618 [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))] diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.AkamaiNetStorageDestination.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.AkamaiNetStorageDestination.g.cs index d80a80b..1bb4dc7 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.AkamaiNetStorageDestination.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.AkamaiNetStorageDestination.g.cs @@ -4,7 +4,7 @@ namespace Shotstack { /// - /// Send videos and assets to [Akamai NetStorage](https://techdocs.akamai.com/netstorage-usage/docs). Send files to your NetStorage upload directory with a custom path and filename. Akamai credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/akamai-netstorage), not in the request. + /// Send videos and assets to [Akamai NetStorage](https://techdocs.akamai.com/netstorage/docs). Send files to your NetStorage upload directory with a custom path and filename. Akamai credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/akamai-netstorage), not in the request. /// public sealed partial class AkamaiNetStorageDestination { diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.AssetResponseAttributes.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.AssetResponseAttributes.g.cs index cc32007..89ef99c 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.AssetResponseAttributes.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.AssetResponseAttributes.g.cs @@ -43,7 +43,7 @@ public sealed partial class AssetResponseAttributes public string? RenderId { get; set; } /// - /// The third party id of an asset transferred to an external provider, i.e. Mux, YouTube or S3. If the provider is Shotstack, the providerID is the same as the asset id.
+ /// The third party id of an asset transferred to an external provider, such as Vimeo or S3. If the provider is Shotstack, the providerID is the same as the asset id.
/// Example: a4482cbf-e321-42a2-ac8b-947d26886840 ///
/// a4482cbf-e321-42a2-ac8b-947d26886840 @@ -132,7 +132,7 @@ public sealed partial class AssetResponseAttributes /// Example: 2abd5c11-0f3d-4c6d-ba20-235fc9b8e8b7 /// /// - /// The third party id of an asset transferred to an external provider, i.e. Mux, YouTube or S3. If the provider is Shotstack, the providerID is the same as the asset id.
+ /// The third party id of an asset transferred to an external provider, such as Vimeo or S3. If the provider is Shotstack, the providerID is the same as the asset id.
/// Example: a4482cbf-e321-42a2-ac8b-947d26886840 /// /// diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.Destinations.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.Destinations.g.cs index 8412ad0..0bc7c79 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.Destinations.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.Destinations.g.cs @@ -48,7 +48,8 @@ public bool TryPickShotstackDestination( : throw new global::System.InvalidOperationException($"Expected union variant 'ShotstackDestination' but the value was {ToString()}."); /// - /// Send videos to the [Mux](https://shotstack.io/docs/guide/serving-assets/destinations/mux/) video hosting and streaming service. Mux credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/mux), not in the request. + /// **Notice: The Mux destination is deprecated.** It continues to work, with no behaviour change for existing integrations.
+ /// Send videos to the [Mux](https://www.mux.com/docs) video hosting and streaming service. Mux credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/mux), not in the request. ///
#if NET6_0_OR_GREATER public global::Shotstack.MuxDestination? MuxDestination { get; init; } @@ -233,6 +234,7 @@ public bool TryPickVimeoDestination( : throw new global::System.InvalidOperationException($"Expected union variant 'VimeoDestination' but the value was {ToString()}."); /// + /// **Notice: The TikTok destination is deprecated.** It continues to work, with no behaviour change for existing integrations.
/// Send videos to TikTok. TikTok credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/tiktok), not in the request. ///
#if NET6_0_OR_GREATER @@ -270,7 +272,7 @@ public bool TryPickTiktokDestination( : throw new global::System.InvalidOperationException($"Expected union variant 'TiktokDestination' but the value was {ToString()}."); /// - /// Send videos and assets to [Akamai NetStorage](https://techdocs.akamai.com/netstorage-usage/docs). Send files to your NetStorage upload directory with a custom path and filename. Akamai credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/akamai-netstorage), not in the request. + /// Send videos and assets to [Akamai NetStorage](https://techdocs.akamai.com/netstorage/docs). Send files to your NetStorage upload directory with a custom path and filename. Akamai credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/akamai-netstorage), not in the request. /// #if NET6_0_OR_GREATER public global::Shotstack.AkamaiNetStorageDestination? AkamaiNetStorageDestination { get; init; } diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.Edit.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.Edit.g.cs index 5e7c80c..2c4164b 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.Edit.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.Edit.g.cs @@ -41,7 +41,7 @@ public sealed partial class Edit /// /// **Notice: This option is now deprecated and will be removed. Disk types are handled automatically. Setting a disk type has no effect.**
- /// The disk type to use for storing footage and assets for each render. See [disk types](https://shotstack.io/docs/guide/architecting-an-application/disk-types/) for more details.
+ /// The disk type to use for storing footage and assets for each render.
/// <ul>
/// <li>`local` - optimized for high speed rendering with up to 512MB storage</li>
/// <li>`mount` - optimized for larger file sizes and longer videos with 5GB for source footage and 512MB for output render</li>
diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.EditDisk.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.EditDisk.g.cs index 8cd4e98..9360511 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.EditDisk.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.EditDisk.g.cs @@ -5,7 +5,7 @@ namespace Shotstack { /// /// **Notice: This option is now deprecated and will be removed. Disk types are handled automatically. Setting a disk type has no effect.**
- /// The disk type to use for storing footage and assets for each render. See [disk types](https://shotstack.io/docs/guide/architecting-an-application/disk-types/) for more details.
+ /// The disk type to use for storing footage and assets for each render.
/// <ul>
/// <li>`local` - optimized for high speed rendering with up to 512MB storage</li>
/// <li>`mount` - optimized for larger file sizes and longer videos with 5GB for source footage and 512MB for output render</li>
diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.ImageAsset.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.ImageAsset.g.cs index 8946c85..e07baec 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.ImageAsset.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.ImageAsset.g.cs @@ -44,9 +44,9 @@ public sealed partial class ImageAsset /// /// The generation model to use when `prompt` is set (e.g. `flux-schnell`, `nano-banana-2`). Defaults to `nano-banana-2` if omitted. Each model's available options are defined by the model registry.
- /// Example: flux-schnell + /// Example: nano-banana-2 ///
- /// flux-schnell + /// nano-banana-2 [global::System.Text.Json.Serialization.JsonPropertyName("model")] public string? Model { get; set; } @@ -83,7 +83,7 @@ public sealed partial class ImageAsset /// /// /// The generation model to use when `prompt` is set (e.g. `flux-schnell`, `nano-banana-2`). Defaults to `nano-banana-2` if omitted. Each model's available options are defined by the model registry.
- /// Example: flux-schnell + /// Example: nano-banana-2 /// /// /// Model-specific generation settings. Valid keys and values depend on the chosen `model` and are defined by the model registry. Omitted options use the model's defaults. Unknown or invalid options are rejected.
diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.MuxDestination.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.MuxDestination.g.cs index 27c612e..719e17d 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.MuxDestination.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.MuxDestination.g.cs @@ -1,11 +1,15 @@ +#pragma warning disable CS0618 // Type or member is obsolete + #nullable enable namespace Shotstack { /// - /// Send videos to the [Mux](https://shotstack.io/docs/guide/serving-assets/destinations/mux/) video hosting and streaming service. Mux credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/mux), not in the request. + /// **Notice: The Mux destination is deprecated.** It continues to work, with no behaviour change for existing integrations.
+ /// Send videos to the [Mux](https://www.mux.com/docs) video hosting and streaming service. Mux credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/mux), not in the request. ///
+ [global::System.Obsolete("This model marked as deprecated.")] public sealed partial class MuxDestination { /// @@ -17,12 +21,15 @@ public sealed partial class MuxDestination /// mux [global::System.Text.Json.Serialization.JsonPropertyName("provider")] [global::System.Text.Json.Serialization.JsonRequired] + [global::System.Obsolete("This property marked as deprecated.")] public required string Provider { get; set; } = "mux"; /// + /// **Notice: MuxDestinationOptions, like the Mux destination, is deprecated.** It continues to work, with no behaviour change for existing integrations.
/// Pass additional options to control how Mux processes video. Currently supports playback_policy and passthrough options. ///
[global::System.Text.Json.Serialization.JsonPropertyName("options")] + [global::System.Obsolete("This property marked as deprecated.")] public global::Shotstack.MuxDestinationOptions? Options { get; set; } /// @@ -39,18 +46,13 @@ public sealed partial class MuxDestination /// Default Value: mux
/// Example: mux /// - /// - /// Pass additional options to control how Mux processes video. Currently supports playback_policy and passthrough options. - /// #if NET7_0_OR_GREATER [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] #endif public MuxDestination( - string provider, - global::Shotstack.MuxDestinationOptions? options) + string provider) { this.Provider = provider ?? throw new global::System.ArgumentNullException(nameof(provider)); - this.Options = options; } /// diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.MuxDestinationOptions.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.MuxDestinationOptions.g.cs index c514654..77a0280 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.MuxDestinationOptions.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.MuxDestinationOptions.g.cs @@ -4,20 +4,24 @@ namespace Shotstack { /// + /// **Notice: MuxDestinationOptions, like the Mux destination, is deprecated.** It continues to work, with no behaviour change for existing integrations.
/// Pass additional options to control how Mux processes video. Currently supports playback_policy and passthrough options. ///
+ [global::System.Obsolete("This model marked as deprecated.")] public sealed partial class MuxDestinationOptions { /// /// Sets the Mux `playback_policy` option. Value is an array of strings - use `public`, `signed`, or both. /// [global::System.Text.Json.Serialization.JsonPropertyName("playbackPolicy")] + [global::System.Obsolete("This property marked as deprecated.")] public global::System.Collections.Generic.IList? PlaybackPolicy { get; set; } /// /// Sets the Mux `passthrough` option. Max 255 characters. /// [global::System.Text.Json.Serialization.JsonPropertyName("passthrough")] + [global::System.Obsolete("This property marked as deprecated.")] public string? Passthrough { get; set; } /// diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.Output.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.Output.g.cs index 7af9b5d..7a0dd07 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.Output.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.Output.g.cs @@ -1,4 +1,6 @@ +#pragma warning disable CS0618 // Type or member is obsolete + #nullable enable namespace Shotstack diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.Source.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.Source.g.cs index 503a002..0ce7a07 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.Source.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.Source.g.cs @@ -1,4 +1,6 @@ +#pragma warning disable CS0618 // Type or member is obsolete + #nullable enable namespace Shotstack diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.TiktokDestination.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.TiktokDestination.g.cs index 319f236..04686b0 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.TiktokDestination.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.TiktokDestination.g.cs @@ -1,11 +1,15 @@ +#pragma warning disable CS0618 // Type or member is obsolete + #nullable enable namespace Shotstack { /// + /// **Notice: The TikTok destination is deprecated.** It continues to work, with no behaviour change for existing integrations.
/// Send videos to TikTok. TikTok credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/tiktok), not in the request. ///
+ [global::System.Obsolete("This model marked as deprecated.")] public sealed partial class TiktokDestination { /// @@ -17,12 +21,15 @@ public sealed partial class TiktokDestination /// tiktok [global::System.Text.Json.Serialization.JsonPropertyName("provider")] [global::System.Text.Json.Serialization.JsonRequired] + [global::System.Obsolete("This property marked as deprecated.")] public required string Provider { get; set; } = "tiktok"; /// + /// **Notice: TiktokDestinationOptions, like the TikTok destination, is deprecated.** It continues to work, with no behaviour change for existing integrations.
/// Pass additional options to control how TikTok publishes video. ///
[global::System.Text.Json.Serialization.JsonPropertyName("options")] + [global::System.Obsolete("This property marked as deprecated.")] public global::Shotstack.TiktokDestinationOptions? Options { get; set; } /// @@ -39,18 +46,13 @@ public sealed partial class TiktokDestination /// Default Value: tiktok
/// Example: tiktok /// - /// - /// Pass additional options to control how TikTok publishes video. - /// #if NET7_0_OR_GREATER [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] #endif public TiktokDestination( - string provider, - global::Shotstack.TiktokDestinationOptions? options) + string provider) { this.Provider = provider ?? throw new global::System.ArgumentNullException(nameof(provider)); - this.Options = options; } /// diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.TiktokDestinationOptions.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.TiktokDestinationOptions.g.cs index 7e30654..aad2109 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.TiktokDestinationOptions.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.TiktokDestinationOptions.g.cs @@ -4,14 +4,17 @@ namespace Shotstack { /// + /// **Notice: TiktokDestinationOptions, like the TikTok destination, is deprecated.** It continues to work, with no behaviour change for existing integrations.
/// Pass additional options to control how TikTok publishes video. ///
+ [global::System.Obsolete("This model marked as deprecated.")] public sealed partial class TiktokDestinationOptions { /// /// A title for the video that will be displayed on TikTok. /// [global::System.Text.Json.Serialization.JsonPropertyName("title")] + [global::System.Obsolete("This property marked as deprecated.")] public string? Title { get; set; } /// @@ -24,6 +27,7 @@ public sealed partial class TiktokDestinationOptions /// [global::System.Text.Json.Serialization.JsonPropertyName("privacyLevel")] [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Shotstack.JsonConverters.TiktokDestinationOptionsPrivacyLevelJsonConverter))] + [global::System.Obsolete("This property marked as deprecated.")] public global::Shotstack.TiktokDestinationOptionsPrivacyLevel? PrivacyLevel { get; set; } /// @@ -31,6 +35,7 @@ public sealed partial class TiktokDestinationOptions /// Default Value: false /// [global::System.Text.Json.Serialization.JsonPropertyName("disableDuet")] + [global::System.Obsolete("This property marked as deprecated.")] public bool? DisableDuet { get; set; } /// @@ -38,6 +43,7 @@ public sealed partial class TiktokDestinationOptions /// Default Value: false /// [global::System.Text.Json.Serialization.JsonPropertyName("disableStitch")] + [global::System.Obsolete("This property marked as deprecated.")] public bool? DisableStitch { get; set; } /// @@ -45,6 +51,7 @@ public sealed partial class TiktokDestinationOptions /// Default Value: false /// [global::System.Text.Json.Serialization.JsonPropertyName("disableComment")] + [global::System.Obsolete("This property marked as deprecated.")] public bool? DisableComment { get; set; } /// diff --git a/src/libs/Shotstack/Generated/Shotstack.Models.Transfer.g.cs b/src/libs/Shotstack/Generated/Shotstack.Models.Transfer.g.cs index 1283258..3cec086 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Models.Transfer.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Models.Transfer.g.cs @@ -1,4 +1,6 @@ +#pragma warning disable CS0618 // Type or member is obsolete + #nullable enable namespace Shotstack diff --git a/src/libs/Shotstack/Generated/Shotstack.Serve.JsonSerializerContext.g.cs b/src/libs/Shotstack/Generated/Shotstack.Serve.JsonSerializerContext.g.cs index 33751c1..4d611c7 100644 --- a/src/libs/Shotstack/Generated/Shotstack.Serve.JsonSerializerContext.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.Serve.JsonSerializerContext.g.cs @@ -18,18 +18,28 @@ namespace Shotstack [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.Destinations), TypeInfoPropertyName = "Destinations2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.ShotstackDestination))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestination))] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.S3Destination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleCloudStorageDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleDriveDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.VimeoDestination))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestination))] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AkamaiNetStorageDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AzureBlobStorageDestination))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.DestinationsDiscriminator))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestinationOptions))] + #pragma warning restore CS0618 + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] + #pragma warning restore CS0618 + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestinationOptionsPlaybackPolicyItem), TypeInfoPropertyName = "MuxDestinationOptionsPlaybackPolicyItem2")] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.S3DestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleCloudStorageDestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.GoogleDriveDestinationOptions))] @@ -49,21 +59,31 @@ namespace Shotstack [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TransferResponseData))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TransferResponseAttributes))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TransferResponseAttributesStatus), TypeInfoPropertyName = "TransferResponseAttributesStatus2")] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestinationOptions))] + #pragma warning restore CS0618 + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestinationOptionsPrivacyLevel), TypeInfoPropertyName = "TiktokDestinationOptionsPrivacyLevel2")] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AkamaiNetStorageDestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AzureBlobStorageDestinationOptions))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(bool?))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.Destinations?), TypeInfoPropertyName = "NullableDestinations2")] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.MuxDestinationOptionsPlaybackPolicyItem?), TypeInfoPropertyName = "NullableMuxDestinationOptionsPlaybackPolicyItem2")] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.VimeoDestinationPrivacyOptionsView?), TypeInfoPropertyName = "NullableVimeoDestinationPrivacyOptionsView2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.VimeoDestinationPrivacyOptionsEmbed?), TypeInfoPropertyName = "NullableVimeoDestinationPrivacyOptionsEmbed2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.VimeoDestinationPrivacyOptionsComments?), TypeInfoPropertyName = "NullableVimeoDestinationPrivacyOptionsComments2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.AssetResponseAttributesStatus?), TypeInfoPropertyName = "NullableAssetResponseAttributesStatus2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TransferResponseAttributesStatus?), TypeInfoPropertyName = "NullableTransferResponseAttributesStatus2")] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Shotstack.TiktokDestinationOptionsPrivacyLevel?), TypeInfoPropertyName = "NullableTiktokDestinationOptionsPrivacyLevel2")] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + #pragma warning disable CS0618 // This registration names a deprecated API model. [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + #pragma warning restore CS0618 [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] internal sealed partial class ServeSourceGenerationContextChunk0 : global::System.Text.Json.Serialization.JsonSerializerContext { diff --git a/src/libs/Shotstack/Generated/Shotstack.ServeClient.GetAssetByRenderId.g.cs b/src/libs/Shotstack/Generated/Shotstack.ServeClient.GetAssetByRenderId.g.cs index 4ae0636..9342e5a 100644 --- a/src/libs/Shotstack/Generated/Shotstack.ServeClient.GetAssetByRenderId.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.ServeClient.GetAssetByRenderId.g.cs @@ -44,7 +44,7 @@ partial void ProcessGetAssetByRenderIdResponseContent( /// /// Get Asset by Render ID
/// A render may generate more than one file, such as a video, thumbnail and poster image. When the assets are
- /// created the only known id is the render id returned by the original [render request](#render-video), status
+ /// created the only known id is the render id returned by the original [render request](#render-asset), status
/// request or webhook. This endpoint lets you look up one or more assets by the render id.
/// **Base URL:** <a href="#">https://api.shotstack.io/serve/{version}</a> ///
@@ -68,7 +68,7 @@ partial void ProcessGetAssetByRenderIdResponseContent( /// /// Get Asset by Render ID
/// A render may generate more than one file, such as a video, thumbnail and poster image. When the assets are
- /// created the only known id is the render id returned by the original [render request](#render-video), status
+ /// created the only known id is the render id returned by the original [render request](#render-asset), status
/// request or webhook. This endpoint lets you look up one or more assets by the render id.
/// **Base URL:** <a href="#">https://api.shotstack.io/serve/{version}</a> ///
diff --git a/src/libs/Shotstack/Generated/Shotstack.ServeClient.PostServeAsset.g.cs b/src/libs/Shotstack/Generated/Shotstack.ServeClient.PostServeAsset.g.cs index f92903d..a74e8b7 100644 --- a/src/libs/Shotstack/Generated/Shotstack.ServeClient.PostServeAsset.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.ServeClient.PostServeAsset.g.cs @@ -1,6 +1,8 @@ #nullable enable +#pragma warning disable CS0618 // Type or member is obsolete + namespace Shotstack { public partial class ServeClient diff --git a/src/libs/Shotstack/Generated/Shotstack.ServeClient.g.cs b/src/libs/Shotstack/Generated/Shotstack.ServeClient.g.cs index 559eed1..61bd7ab 100644 --- a/src/libs/Shotstack/Generated/Shotstack.ServeClient.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.ServeClient.g.cs @@ -4,7 +4,7 @@ namespace Shotstack { /// - /// Assets generated by the Edit API or uploaded via the Ingest API are sent to the Serve API. The Serve API includes a simple hosting service with a CDN or you can send assets to third party services like AWS S3 or Mux. The Serve API includes endpoints to look up assets, where they are hosted and their status.
+ /// Assets generated by the Edit API or uploaded via the Ingest API are sent to the Serve API. The Serve API includes a simple hosting service with a CDN or you can send assets to third party services like AWS S3 or Google Cloud Storage. The Serve API includes endpoints to look up assets, where they are hosted and their status.
/// If no httpClient is provided, a new one will be created.
/// If no baseUri is provided, the default baseUri from OpenAPI spec will be used. ///
diff --git a/src/libs/Shotstack/Generated/Shotstack.ShotstackClient.g.cs b/src/libs/Shotstack/Generated/Shotstack.ShotstackClient.g.cs index 07f7056..1203d5f 100644 --- a/src/libs/Shotstack/Generated/Shotstack.ShotstackClient.g.cs +++ b/src/libs/Shotstack/Generated/Shotstack.ShotstackClient.g.cs @@ -82,7 +82,7 @@ public sealed partial class ShotstackClient : global::Shotstack.IShotstackClient }; /// - /// Assets generated by the Edit API or uploaded via the Ingest API are sent to the Serve API. The Serve API includes a simple hosting service with a CDN or you can send assets to third party services like AWS S3 or Mux. The Serve API includes endpoints to look up assets, where they are hosted and their status. + /// Assets generated by the Edit API or uploaded via the Ingest API are sent to the Serve API. The Serve API includes a simple hosting service with a CDN or you can send assets to third party services like AWS S3 or Google Cloud Storage. The Serve API includes endpoints to look up assets, where they are hosted and their status. /// public ServeClient Serve => new ServeClient(HttpClient, baseUri: null, authorizations: Authorizations, options: Options) { diff --git a/src/libs/Shotstack/Generated/autosdk.generated-examples.json b/src/libs/Shotstack/Generated/autosdk.generated-examples.json index ad5c6b8..e52f297 100644 --- a/src/libs/Shotstack/Generated/autosdk.generated-examples.json +++ b/src/libs/Shotstack/Generated/autosdk.generated-examples.json @@ -13,28 +13,61 @@ }, { "Order": 2, + "Title": "Generate Asset", + "Slug": "postgenerate", + "Description": "Generate a single image, video or audio asset from a text prompt without\nrendering a full edit. Submit a prompt-bearing asset; the response is\nimmediate when an identical asset has been generated before (results are\ncached by prompt, model and options), otherwise the job is queued and can\nbe polled via the status endpoint.\n\nGeneration is billed in credits per asset. Identical repeat requests\nresolve from the cache at no charge.\n\n**Base URL:** \u003Ca href=\u0022#\u0022\u003Ehttps://api.shotstack.io/edit/{version}\u003C/a\u003E", + "Language": "http", + "Code": "### Generate Asset\n# @name postGenerate\nPOST {{host}}/edit/v1/generate\nIdempotency-Key: {{Idempotency-Key}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022image\u0022,\n \u0022prompt\u0022: \u0022A lighthouse on a rocky coast at sunset, cinematic lighting\u0022,\n \u0022model\u0022: \u0022nano-banana-2\u0022\n }\n}\n\n## Responses\n# 200\n# Description: The asset was generated before: \u0060done\u0060 with its URL, or \u0060failed\u0060 with the error that ended it.\n# Content-Type: application/json\n# 202\n# Description: The generation job has been queued. Poll the status endpoint.\n# Content-Type: application/json\n# 400\n# Description: The request is invalid, for example a missing asset or prompt, a disallowed URL or a \u0060length\u0060 that is not positive.\n# Content-Type: application/json\n# 402\n# Description: The account has too few credits for this generation. \u0060available\u0060 holds how many it has.\n# Content-Type: application/json\n# 403\n# Description: The account cannot use this generation. \u0060code\u0060 says why.\n# Content-Type: application/json\n# 409\n# Description: The \u0060Idempotency-Key\u0060 was already used for a different asset.\n# Content-Type: application/json\n# 429\n# Description: The account has reached its generation quota.\n# Content-Type: application/json\n# 503\n# Description: A service the request depends on is temporarily unavailable. \u0060code\u0060 is \u0060AiAccessUnavailable\u0060 when access to AI generation could not be confirmed.\n# Content-Type: application/json", + "Format": "http", + "OperationId": "postGenerate", + "Setup": null + }, + { + "Order": 3, "Title": "Render Asset", "Slug": "postrender", - "Description": "Queue and render the contents of an [Edit](#tocs_edit) as a video, image or audio file.\n\n**Rendering Process:**\n1. **Validation**: The edit JSON is validated\n2. **Download**: All assets are downloaded and cached \n3. **Preprocessing**: Video assets are automatically processed to fix compatibility issues\n4. **Rendering**: The timeline is rendered using the processed assets\n5. **Output**: The final media file is generated and stored\n\n**Video Preprocessing:**\nVideo assets undergo automatic preprocessing to ensure compatibility. You can force \npreprocessing by setting \u0060\u0022transcode\u0022: true\u0060 on video assets. See [Preprocessing](#preprocessing) \nfor more details.\n\n**Base URL:** \u003Ca href=\u0022#\u0022\u003Ehttps://api.shotstack.io/edit/{version}\u003C/a\u003E", + "Description": "Queue and render the contents of an [Edit](#tocs_edit) as a video, image or audio file.\n\n**Rendering Process:**\n1. **Validation**: The edit JSON is validated\n2. **Download**: All assets are downloaded and cached \n3. **Preprocessing**: Video assets are automatically processed to fix compatibility issues\n4. **Rendering**: The timeline is rendered using the processed assets\n5. **Output**: The final media file is generated and stored\n\n**Video Preprocessing:**\nVideo assets undergo automatic preprocessing to ensure compatibility. You can force \npreprocessing by setting \u0060\u0022transcode\u0022: true\u0060 on video assets. See [VideoAsset](#tocs_videoasset) \nfor more details.\n\n**Base URL:** \u003Ca href=\u0022#\u0022\u003Ehttps://api.shotstack.io/edit/{version}\u003C/a\u003E", "Language": "http", - "Code": "### Render Asset\n# @name postRender\nPOST {{host}}/edit/v1/render\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022timeline\u0022: {\n \u0022soundtrack\u0022: {\n \u0022src\u0022: \u0022https://s3-ap-northeast-1.amazonaws.com/my-bucket/music.mp3\u0022,\n \u0022effect\u0022: \u0022fadeInFadeOut\u0022\n },\n \u0022background\u0022: \u0022#000000\u0022,\n \u0022tracks\u0022: [\n {\n \u0022clips\u0022: [\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022title\u0022,\n \u0022text\u0022: \u0022Hello World\u0022,\n \u0022style\u0022: \u0022minimal\u0022\n },\n \u0022start\u0022: 0,\n \u0022length\u0022: 4,\n \u0022transition\u0022: {\n \u0022in\u0022: \u0022fade\u0022,\n \u0022out\u0022: \u0022fade\u0022\n },\n \u0022effect\u0022: \u0022slideRight\u0022\n },\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022image\u0022,\n \u0022src\u0022: \u0022https://s3-ap-northeast-1.amazonaws.com/my-bucket/my-image.jpg\u0022\n },\n \u0022start\u0022: 3,\n \u0022length\u0022: 4,\n \u0022effect\u0022: \u0022zoomIn\u0022,\n \u0022filter\u0022: \u0022greyscale\u0022\n }\n ]\n },\n {\n \u0022clips\u0022: [\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022video\u0022,\n \u0022src\u0022: \u0022https://s3-ap-northeast-1.amazonaws.com/my-bucket/my-clip-1.mp4\u0022,\n \u0022trim\u0022: 10.5,\n \u0022transcode\u0022: true\n },\n \u0022start\u0022: 7,\n \u0022length\u0022: 4.5\n },\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022video\u0022,\n \u0022src\u0022: \u0022https://s3-ap-northeast-1.amazonaws.com/my-bucket/my-clip-2.mp4\u0022,\n \u0022volume\u0022: 0.5\n },\n \u0022start\u0022: 11.5,\n \u0022length\u0022: 5,\n \u0022transition\u0022: {\n \u0022out\u0022: \u0022wipeLeft\u0022\n }\n }\n ]\n }\n ]\n },\n \u0022output\u0022: {\n \u0022format\u0022: \u0022mp4\u0022,\n \u0022resolution\u0022: \u0022sd\u0022\n }\n}\n\n## Responses\n# 201\n# Description: The queued render details\n# Content-Type: application/json", + "Code": "### Render Asset\n# @name postRender\nPOST {{host}}/edit/v1/render\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022timeline\u0022: {\n \u0022background\u0022: \u0022#000000\u0022,\n \u0022fonts\u0022: [\n {\n \u0022src\u0022: \u0022https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm45xW5rygbi49c.ttf\u0022\n }\n ],\n \u0022tracks\u0022: [\n {\n \u0022clips\u0022: [\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022rich-text\u0022,\n \u0022text\u0022: \u0022Hello World\u0022,\n \u0022font\u0022: {\n \u0022family\u0022: \u0022JTUSjIg1_i6t8kCHKm45xW5rygbi49c\u0022,\n \u0022size\u0022: 64,\n \u0022weight\u0022: \u0022700\u0022,\n \u0022color\u0022: \u0022#ffffff\u0022\n },\n \u0022align\u0022: {\n \u0022horizontal\u0022: \u0022center\u0022,\n \u0022vertical\u0022: \u0022middle\u0022\n }\n },\n \u0022start\u0022: 0,\n \u0022length\u0022: 4,\n \u0022transition\u0022: {\n \u0022in\u0022: \u0022fade\u0022,\n \u0022out\u0022: \u0022fade\u0022\n }\n },\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022image\u0022,\n \u0022src\u0022: \u0022https://shotstack-assets.s3.amazonaws.com/images/earth.jpg\u0022\n },\n \u0022start\u0022: 4,\n \u0022length\u0022: 3,\n \u0022effect\u0022: \u0022zoomIn\u0022,\n \u0022filter\u0022: \u0022greyscale\u0022\n }\n ]\n },\n {\n \u0022clips\u0022: [\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022video\u0022,\n \u0022src\u0022: \u0022https://shotstack-assets.s3.amazonaws.com/footage/beach.mp4\u0022,\n \u0022transcode\u0022: true\n },\n \u0022start\u0022: 7,\n \u0022length\u0022: 4.5\n },\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022video\u0022,\n \u0022src\u0022: \u0022https://shotstack-assets.s3.amazonaws.com/footage/city-timelapse.mp4\u0022,\n \u0022volume\u0022: 0.5\n },\n \u0022start\u0022: 11.5,\n \u0022length\u0022: 5,\n \u0022transition\u0022: {\n \u0022out\u0022: \u0022wipeLeft\u0022\n }\n }\n ]\n },\n {\n \u0022clips\u0022: [\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022audio\u0022,\n \u0022src\u0022: \u0022https://shotstack-assets.s3.amazonaws.com/music/unminus/lit.mp3\u0022,\n \u0022effect\u0022: \u0022fadeInFadeOut\u0022\n },\n \u0022start\u0022: 0,\n \u0022length\u0022: \u0022end\u0022\n }\n ]\n }\n ]\n },\n \u0022output\u0022: {\n \u0022format\u0022: \u0022mp4\u0022,\n \u0022resolution\u0022: \u0022sd\u0022\n }\n}\n\n## Responses\n# 201\n# Description: The queued render details\n# Content-Type: application/json", "Format": "http", "OperationId": "postRender", "Setup": null }, { - "Order": 3, + "Order": 4, + "Title": "Create Template", + "Slug": "posttemplate", + "Description": "Save an [Edit](#tocs_edit) as a re-usable template. Templates can be retrieved and modified in your application\nbefore being rendered. [Merge fields](#tocs_mergefield) can be also used to merge data in to a template and\n[render](#render-template) it in a single request.\n\n**Base URL:** \u003Ca href=\u0022#\u0022\u003Ehttps://api.shotstack.io/edit/{version}\u003C/a\u003E", + "Language": "http", + "Code": "### Create Template\n# @name postTemplate\nPOST {{host}}/edit/v1/templates\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022Jane\\u0027s welcome video\u0022,\n \u0022template\u0022: {\n \u0022timeline\u0022: {\n \u0022fonts\u0022: [\n {\n \u0022src\u0022: \u0022https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm45xW5rygbi49c.ttf\u0022\n }\n ],\n \u0022tracks\u0022: [\n {\n \u0022clips\u0022: [\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022rich-text\u0022,\n \u0022text\u0022: \u0022HELLO {{NAME}}\u0022,\n \u0022font\u0022: {\n \u0022family\u0022: \u0022JTUSjIg1_i6t8kCHKm45xW5rygbi49c\u0022,\n \u0022size\u0022: 72,\n \u0022weight\u0022: \u0022800\u0022,\n \u0022color\u0022: \u0022#ffffff\u0022\n },\n \u0022align\u0022: {\n \u0022horizontal\u0022: \u0022center\u0022,\n \u0022vertical\u0022: \u0022middle\u0022\n }\n },\n \u0022start\u0022: 0,\n \u0022length\u0022: 5\n }\n ]\n }\n ]\n },\n \u0022output\u0022: {\n \u0022format\u0022: \u0022mp4\u0022,\n \u0022size\u0022: {\n \u0022width\u0022: 1024,\n \u0022height\u0022: 576\n }\n },\n \u0022merge\u0022: [\n {\n \u0022find\u0022: \u0022NAME\u0022,\n \u0022replace\u0022: \u0022World\u0022\n }\n ]\n }\n}\n\n## Responses\n# 201\n# Description: The saved template status including the id\n# Content-Type: application/json", + "Format": "http", + "OperationId": "postTemplate", + "Setup": null + }, + { + "Order": 5, + "Title": "Render Template", + "Slug": "posttemplaterender", + "Description": "Render an asset from a template id and optional merge fields. Merge fields can be used to replace placeholder\nvariables within the [Edit](#tocs_edit).\n\n**Base URL:** \u003Ca href=\u0022#\u0022\u003Ehttps://api.shotstack.io/edit/{version}\u003C/a\u003E", + "Language": "http", + "Code": "### Render Template\n# @name postTemplateRender\nPOST {{host}}/edit/v1/templates/render\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022id\u0022: \u0022f5493c17-d01f-445c-bb49-535fae65f219\u0022,\n \u0022merge\u0022: [\n {\n \u0022find\u0022: \u0022NAME\u0022,\n \u0022replace\u0022: \u0022Jane\u0022\n }\n ]\n}\n\n## Responses\n# 201\n# Description: The queued status including the render id. Check the status of the render using the id and the [render status](#get-render-status) endpoint.\n# Content-Type: application/json", + "Format": "http", + "OperationId": "postTemplateRender", + "Setup": null + }, + { + "Order": 6, "Title": "Update Template", "Slug": "puttemplate", "Description": "Update an existing template by template id.\n\n**Base URL:** \u003Ca href=\u0022#\u0022\u003Ehttps://api.shotstack.io/edit/{version}\u003C/a\u003E", "Language": "http", - "Code": "### Update Template\n# @name putTemplate\nPUT {{host}}/edit/v1/templates/{{id}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My template\u0022,\n \u0022template\u0022: {\n \u0022timeline\u0022: {\n \u0022soundtrack\u0022: {},\n \u0022background\u0022: \u0022string\u0022,\n \u0022fonts\u0022: [],\n \u0022tracks\u0022: [],\n \u0022cache\u0022: true\n },\n \u0022output\u0022: {\n \u0022format\u0022: \u0022mp4\u0022,\n \u0022resolution\u0022: \u0022hd\u0022,\n \u0022aspectRatio\u0022: \u002216:9\u0022,\n \u0022size\u0022: {},\n \u0022fps\u0022: 25,\n \u0022scaleTo\u0022: \u0022preview\u0022,\n \u0022quality\u0022: \u0022medium\u0022,\n \u0022repeat\u0022: true,\n \u0022mute\u0022: false,\n \u0022range\u0022: {},\n \u0022poster\u0022: {},\n \u0022thumbnail\u0022: {},\n \u0022destinations\u0022: []\n },\n \u0022merge\u0022: [\n {}\n ],\n \u0022callback\u0022: \u0022https://my-server.com/callback.php\u0022,\n \u0022disk\u0022: \u0022local\u0022,\n \u0022instance\u0022: \u0022s1\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Update a templates name and [Edit](#tocs_edit)\n# Content-Type: application/json", + "Code": "### Update Template\n# @name putTemplate\nPUT {{host}}/edit/v1/templates/{{id}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022Jane\\u0027s welcome video\u0022,\n \u0022template\u0022: {\n \u0022timeline\u0022: {\n \u0022fonts\u0022: [\n {\n \u0022src\u0022: \u0022https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm45xW5rygbi49c.ttf\u0022\n }\n ],\n \u0022tracks\u0022: [\n {\n \u0022clips\u0022: [\n {\n \u0022asset\u0022: {\n \u0022type\u0022: \u0022rich-text\u0022,\n \u0022text\u0022: \u0022HELLO {{NAME}}\u0022,\n \u0022font\u0022: {\n \u0022family\u0022: \u0022JTUSjIg1_i6t8kCHKm45xW5rygbi49c\u0022,\n \u0022size\u0022: 72,\n \u0022weight\u0022: \u0022800\u0022,\n \u0022color\u0022: \u0022#ffffff\u0022\n },\n \u0022align\u0022: {\n \u0022horizontal\u0022: \u0022center\u0022,\n \u0022vertical\u0022: \u0022middle\u0022\n }\n },\n \u0022start\u0022: 0,\n \u0022length\u0022: 5\n }\n ]\n }\n ]\n },\n \u0022output\u0022: {\n \u0022format\u0022: \u0022mp4\u0022,\n \u0022size\u0022: {\n \u0022width\u0022: 1024,\n \u0022height\u0022: 576\n }\n },\n \u0022merge\u0022: [\n {\n \u0022find\u0022: \u0022NAME\u0022,\n \u0022replace\u0022: \u0022World\u0022\n }\n ]\n }\n}\n\n## Responses\n# 200\n# Description: Update a templates name and [Edit](#tocs_edit)\n# Content-Type: application/json", "Format": "http", "OperationId": "putTemplate", "Setup": null }, { - "Order": 4, + "Order": 7, "Title": "Fetch Source", "Slug": "postsource", "Description": "Queue a source file to be fetched from a URL and stored by Shotstack. Source files can be videos, images, audio\nfiles and fonts. Once ingested, new [output renditions](#tocs_outputs) can be created from the source file.\n\n**Base URL:** \u003Ca href=\u0022#\u0022\u003Ehttps://api.shotstack.io/ingest/{version}\u003C/a\u003E", @@ -43,6 +76,17 @@ "Format": "http", "OperationId": "postSource", "Setup": null + }, + { + "Order": 8, + "Title": "Transfer Asset", + "Slug": "postserveasset", + "Description": "Transfer a file from any publicly available URL to one or more Serve API\n[destinations](#tocs_destinations).\n\n**Base URL:** \u003Ca href=\u0022#\u0022\u003Ehttps://api.shotstack.io/serve/{version}\u003C/a\u003E", + "Language": "http", + "Code": "### Transfer Asset\n# @name postServeAsset\nPOST {{host}}/serve/v1/assets\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022url\u0022: \u0022https://s3-ap-southeast-2.amazonaws.com/shotstack-assets/music/moment.mp3\u0022,\n \u0022id\u0022: \u0022018e8937-5015-75ee-aab6-03f214981133\u0022,\n \u0022destinations\u0022: [\n {\n \u0022provider\u0022: \u0022shotstack\u0022\n }\n ]\n}\n\n## Responses\n# 200\n# Description: The transfer request details and status\n# Content-Type: application/json", + "Format": "http", + "OperationId": "postServeAsset", + "Setup": null } ] } \ No newline at end of file diff --git a/src/libs/Shotstack/openapi.json b/src/libs/Shotstack/openapi.json index 9b31b28..4182ad3 100644 --- a/src/libs/Shotstack/openapi.json +++ b/src/libs/Shotstack/openapi.json @@ -17,7 +17,7 @@ }, { "name": "Serve", - "description": "Assets generated by the Edit API or uploaded via the Ingest API are sent to the Serve API. The Serve API includes a simple hosting service with a CDN or you can send assets to third party services like AWS S3 or Mux. The Serve API includes endpoints to look up assets, where they are hosted and their status." + "description": "Assets generated by the Edit API or uploaded via the Ingest API are sent to the Serve API. The Serve API includes a simple hosting service with a CDN or you can send assets to third party services like AWS S3 or Google Cloud Storage. The Serve API includes endpoints to look up assets, where they are hosted and their status." }, { "name": "Ingest", @@ -39,7 +39,7 @@ } } }, - "description": "Queue and render the contents of an [Edit](#tocs_edit) as a video, image or audio file.\n\n**Rendering Process:**\n1. **Validation**: The edit JSON is validated\n2. **Download**: All assets are downloaded and cached \n3. **Preprocessing**: Video assets are automatically processed to fix compatibility issues\n4. **Rendering**: The timeline is rendered using the processed assets\n5. **Output**: The final media file is generated and stored\n\n**Video Preprocessing:**\nVideo assets undergo automatic preprocessing to ensure compatibility. You can force \npreprocessing by setting `\"transcode\": true` on video assets. See [Preprocessing](#preprocessing) \nfor more details.\n\n**Base URL:** https://api.shotstack.io/edit/{version}\n", + "description": "Queue and render the contents of an [Edit](#tocs_edit) as a video, image or audio file.\n\n**Rendering Process:**\n1. **Validation**: The edit JSON is validated\n2. **Download**: All assets are downloaded and cached \n3. **Preprocessing**: Video assets are automatically processed to fix compatibility issues\n4. **Rendering**: The timeline is rendered using the processed assets\n5. **Output**: The final media file is generated and stored\n\n**Video Preprocessing:**\nVideo assets undergo automatic preprocessing to ensure compatibility. You can force \npreprocessing by setting `\"transcode\": true` on video assets. See [VideoAsset](#tocs_videoasset) \nfor more details.\n\n**Base URL:** https://api.shotstack.io/edit/{version}\n", "summary": "Render Asset", "operationId": "postRender", "requestBody": { @@ -48,35 +48,44 @@ "application/json": { "example": { "timeline": { - "soundtrack": { - "src": "https://s3-ap-northeast-1.amazonaws.com/my-bucket/music.mp3", - "effect": "fadeInFadeOut" - }, "background": "#000000", + "fonts": [ + { + "src": "https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm45xW5rygbi49c.ttf" + } + ], "tracks": [ { "clips": [ { "asset": { - "type": "title", + "type": "rich-text", "text": "Hello World", - "style": "minimal" + "font": { + "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", + "size": 64, + "weight": "700", + "color": "#ffffff" + }, + "align": { + "horizontal": "center", + "vertical": "middle" + } }, "start": 0, "length": 4, "transition": { "in": "fade", "out": "fade" - }, - "effect": "slideRight" + } }, { "asset": { "type": "image", - "src": "https://s3-ap-northeast-1.amazonaws.com/my-bucket/my-image.jpg" + "src": "https://shotstack-assets.s3.amazonaws.com/images/earth.jpg" }, - "start": 3, - "length": 4, + "start": 4, + "length": 3, "effect": "zoomIn", "filter": "greyscale" } @@ -87,8 +96,7 @@ { "asset": { "type": "video", - "src": "https://s3-ap-northeast-1.amazonaws.com/my-bucket/my-clip-1.mp4", - "trim": 10.5, + "src": "https://shotstack-assets.s3.amazonaws.com/footage/beach.mp4", "transcode": true }, "start": 7, @@ -97,7 +105,7 @@ { "asset": { "type": "video", - "src": "https://s3-ap-northeast-1.amazonaws.com/my-bucket/my-clip-2.mp4", + "src": "https://shotstack-assets.s3.amazonaws.com/footage/city-timelapse.mp4", "volume": 0.5 }, "start": 11.5, @@ -107,6 +115,19 @@ } } ] + }, + { + "clips": [ + { + "asset": { + "type": "audio", + "src": "https://shotstack-assets.s3.amazonaws.com/music/unminus/lit.mp3", + "effect": "fadeInFadeOut" + }, + "start": 0, + "length": "end" + } + ] } ] }, @@ -147,7 +168,96 @@ "id": "2abd5c11-0f3d-4c6d-ba20-235fc9b8e8b7", "owner": "5ca6hu7s9k", "url": "https://shotstack-api-v1-output.s3-ap-southeast-2.amazonaws.com/5ca6hu7s9k/2abd5c11-0f3d-4c6d-ba20-235fc9b8e8b7.mp4", - "data": {}, + "data": { + "timeline": { + "background": "#000000", + "fonts": [ + { + "src": "https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm45xW5rygbi49c.ttf" + } + ], + "tracks": [ + { + "clips": [ + { + "asset": { + "type": "rich-text", + "text": "Hello World", + "font": { + "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", + "size": 64, + "weight": "700", + "color": "#ffffff" + }, + "align": { + "horizontal": "center", + "vertical": "middle" + } + }, + "start": 0, + "length": 4, + "transition": { + "in": "fade", + "out": "fade" + } + }, + { + "asset": { + "type": "image", + "src": "https://shotstack-assets.s3.amazonaws.com/images/earth.jpg" + }, + "start": 4, + "length": 3, + "effect": "zoomIn", + "filter": "greyscale" + } + ] + }, + { + "clips": [ + { + "asset": { + "type": "video", + "src": "https://shotstack-assets.s3.amazonaws.com/footage/beach.mp4", + "transcode": true + }, + "start": 7, + "length": 4.5 + }, + { + "asset": { + "type": "video", + "src": "https://shotstack-assets.s3.amazonaws.com/footage/city-timelapse.mp4", + "volume": 0.5 + }, + "start": 11.5, + "length": 5, + "transition": { + "out": "wipeLeft" + } + } + ] + }, + { + "clips": [ + { + "asset": { + "type": "audio", + "src": "https://shotstack-assets.s3.amazonaws.com/music/unminus/lit.mp3", + "effect": "fadeInFadeOut" + }, + "start": 0, + "length": "end" + } + ] + } + ] + }, + "output": { + "format": "mp4", + "resolution": "sd" + } + }, "created": "2020-10-30T09:42:29.446Z", "updated": "2020-10-30T09:42:39.168Z" } @@ -211,6 +321,55 @@ "description": "Create a template with a name and [Edit](#tocs_edit).", "content": { "application/json": { + "example": { + "name": "Jane's welcome video", + "template": { + "timeline": { + "fonts": [ + { + "src": "https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm45xW5rygbi49c.ttf" + } + ], + "tracks": [ + { + "clips": [ + { + "asset": { + "type": "rich-text", + "text": "HELLO {{NAME}}", + "font": { + "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", + "size": 72, + "weight": "800", + "color": "#ffffff" + }, + "align": { + "horizontal": "center", + "vertical": "middle" + } + }, + "start": 0, + "length": 5 + } + ] + } + ] + }, + "output": { + "format": "mp4", + "size": { + "width": 1024, + "height": 576 + } + }, + "merge": [ + { + "find": "NAME", + "replace": "World" + } + ] + } + }, "schema": { "$ref": "#/components/schemas/Template" } @@ -299,6 +458,55 @@ "description": "Update an individual templates name and [Edit](#tocs_edit). Both template name and template must be provided. If the template parameter is omitted a blank template will be saved.", "content": { "application/json": { + "example": { + "name": "Jane's welcome video", + "template": { + "timeline": { + "fonts": [ + { + "src": "https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm45xW5rygbi49c.ttf" + } + ], + "tracks": [ + { + "clips": [ + { + "asset": { + "type": "rich-text", + "text": "HELLO {{NAME}}", + "font": { + "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", + "size": 72, + "weight": "800", + "color": "#ffffff" + }, + "align": { + "horizontal": "center", + "vertical": "middle" + } + }, + "start": 0, + "length": 5 + } + ] + } + ] + }, + "output": { + "format": "mp4", + "size": { + "width": 1024, + "height": 576 + } + }, + "merge": [ + { + "find": "NAME", + "replace": "World" + } + ] + } + }, "schema": { "$ref": "#/components/schemas/Template" } @@ -375,6 +583,15 @@ "description": "Render a template by template id.", "content": { "application/json": { + "example": { + "id": "f5493c17-d01f-445c-bb49-535fae65f219", + "merge": [ + { + "find": "NAME", + "replace": "Jane" + } + ] + }, "schema": { "$ref": "#/components/schemas/TemplateRender" } @@ -566,6 +783,13 @@ "description": "A prompt-bearing image, video or audio asset to generate.", "content": { "application/json": { + "example": { + "asset": { + "type": "image", + "prompt": "A lighthouse on a rocky coast at sunset, cinematic lighting", + "model": "nano-banana-2" + } + }, "schema": { "type": "object", "properties": { @@ -835,7 +1059,7 @@ } } }, - "description": "A render may generate more than one file, such as a video, thumbnail and poster image. When the assets are\ncreated the only known id is the render id returned by the original [render request](#render-video), status \nrequest or webhook. This endpoint lets you look up one or more assets by the render id.\n\n**Base URL:** https://api.shotstack.io/serve/{version}\n", + "description": "A render may generate more than one file, such as a video, thumbnail and poster image. When the assets are\ncreated the only known id is the render id returned by the original [render request](#render-asset), status \nrequest or webhook. This endpoint lets you look up one or more assets by the render id.\n\n**Base URL:** https://api.shotstack.io/serve/{version}\n", "operationId": "getAssetByRenderId", "summary": "Get Asset by Render ID", "security": [ @@ -869,6 +1093,15 @@ "description": "Fetch an asset from a URL and send it to one or more destinations.", "content": { "application/json": { + "example": { + "url": "https://s3-ap-southeast-2.amazonaws.com/shotstack-assets/music/moment.mp3", + "id": "018e8937-5015-75ee-aab6-03f214981133", + "destinations": [ + { + "provider": "shotstack" + } + ] + }, "schema": { "$ref": "#/components/schemas/Transfer" } @@ -1045,7 +1278,7 @@ } } }, - "description": "Request a signed URL to upload a file to. The response returns a signed URL that you use to upload the file to.\nThe signed URL looks similar to:\n\nhttps://shotstack-ingest-api-stage-sources.s3.ap-southeast-2.amazonaws.com/5ca6hu7s9k/zzytey4v-32km-kq1z-aftr-3kcuqi0brad2/source?AWSAccessKeyId=ASIAWJV7UWDMGTZLHTXP&Expires=1677209777&Signature=PKR4dGDDdOuMTAQmDASzLGmLOeo%3D&x-amz-acl=public-read&x-amz-security-token=IQoJb3JpZ2luX2VjEGMaDmFwLX......56osBGByztm7WZdbmXzO09KR\n\nIn a separate API call, use this signed URL to send a PUT request with the binary file. Using cURL you can use\na command like:\n \n`curl -X PUT -T video.mp4 {data.attributes.url}`\n \nWhere **video.mp4** is the file you want to upload and **{data.attributes.url}** is the signed URL returned in\nthe response. The request must be a PUT type.\n\nThe SDK does not currently support the PUT request. You can use the SDK to make the request for the signed URL\nand then use cURL to make the PUT request.\n\n**Base URL:** https://api.shotstack.io/ingest/{version}\n", + "description": "Request a signed URL to upload a file to. The response returns a signed URL that you use to upload the file to.\nThe signed URL looks similar to:\n\n`https://shotstack-ingest-api-stage-sources.s3.ap-southeast-2.amazonaws.com/5ca6hu7s9k/zzytey4v-32km-kq1z-aftr-3kcuqi0brad2/source?AWSAccessKeyId=ASIAWJV7UWDMGTZLHTXP&Expires=1677209777&Signature=PKR4dGDDdOuMTAQmDASzLGmLOeo%3D&x-amz-acl=public-read&x-amz-security-token=IQoJb3JpZ2luX2VjEGMaDmFwLX......56osBGByztm7WZdbmXzO09KR`\n\nIn a separate API call, use this signed URL to send a PUT request with the binary file. Using cURL you can use\na command like:\n \n`curl -X PUT -T video.mp4 {data.attributes.url}`\n \nWhere **video.mp4** is the file you want to upload and **{data.attributes.url}** is the signed URL returned in\nthe response. The request must be a PUT type.\n\nThe SDK does not currently support the PUT request. You can use the SDK to make the request for the signed URL\nand then use cURL to make the PUT request.\n\n**Base URL:** https://api.shotstack.io/ingest/{version}\n", "summary": "Direct Upload", "operationId": "getUploadSignedUrl", "security": [ @@ -1083,7 +1316,7 @@ "example": "https://my-server.com/callback.php" }, "disk": { - "description": "**Notice: This option is now deprecated and will be removed. Disk types are handled automatically. Setting a disk type has no effect.**\n\nThe disk type to use for storing footage and assets for each render. See [disk types](https://shotstack.io/docs/guide/architecting-an-application/disk-types/) for more details.\n
    \n
  • `local` - optimized for high speed rendering with up to 512MB storage
  • \n
  • `mount` - optimized for larger file sizes and longer videos with 5GB for source footage and 512MB for output render
  • \n
\n", + "description": "**Notice: This option is now deprecated and will be removed. Disk types are handled automatically. Setting a disk type has no effect.**\n\nThe disk type to use for storing footage and assets for each render.\n
    \n
  • `local` - optimized for high speed rendering with up to 512MB storage
  • \n
  • `mount` - optimized for larger file sizes and longer videos with 5GB for source footage and 512MB for output render
  • \n
\n", "type": "string", "enum": [ "local", @@ -1614,7 +1847,7 @@ "model": { "description": "The generation model to use when `prompt` is set (e.g. `flux-schnell`, `nano-banana-2`). Defaults to `nano-banana-2` if omitted. Each model's available options are defined by the model registry.", "type": "string", - "example": "flux-schnell" + "example": "nano-banana-2" }, "options": { "description": "Model-specific generation settings. Valid keys and values depend on the chosen `model` and are defined by the model registry. Omitted options use the model's defaults. Unknown or invalid options are rejected.", @@ -3457,6 +3690,77 @@ "additionalProperties": false, "type": "object" }, + "RichTextBorder": { + "description": "Border styling properties for the text bounding box.", + "properties": { + "width": { + "description": "The width of the border in pixels. Must be 0 or greater.", + "type": "number", + "minimum": 0, + "default": 0, + "example": 2 + }, + "color": { + "description": "The border color using hexadecimal color notation.", + "type": "string", + "pattern": "^#[A-Fa-f0-9]{6}$", + "default": "#000000", + "example": "#ff0000" + }, + "opacity": { + "description": "The opacity of the border where 1 is opaque and 0 is transparent.", + "type": "number", + "minimum": 0, + "maximum": 1, + "default": 1, + "example": 0.8 + }, + "radius": { + "description": "The border radius in pixels for rounded corners. Must be 0 or greater.", + "type": "number", + "minimum": 0, + "default": 0, + "example": 10 + } + }, + "additionalProperties": false, + "type": "object" + }, + "RichTextPadding": { + "description": "Padding properties for individual sides of the text bounding box.", + "properties": { + "top": { + "description": "Top padding in pixels.", + "type": "number", + "minimum": 0, + "default": 0, + "example": 10 + }, + "right": { + "description": "Right padding in pixels.", + "type": "number", + "minimum": 0, + "default": 0, + "example": 10 + }, + "bottom": { + "description": "Bottom padding in pixels.", + "type": "number", + "minimum": 0, + "default": 0, + "example": 10 + }, + "left": { + "description": "Left padding in pixels.", + "type": "number", + "minimum": 0, + "default": 0, + "example": 10 + } + }, + "additionalProperties": false, + "type": "object" + }, "CaptionFont": { "description": "Font properties for captions text.", "properties": { @@ -3926,7 +4230,8 @@ ] }, "MuxDestination": { - "description": "Send videos to the [Mux](https://shotstack.io/docs/guide/serving-assets/destinations/mux/) video hosting and streaming service. Mux credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/mux), not in the request.", + "deprecated": true, + "description": "**Notice: The Mux destination is deprecated.** It continues to work, with no behaviour change for existing integrations.\nSend videos to the [Mux](https://www.mux.com/docs) video hosting and streaming service. Mux credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/mux), not in the request.", "properties": { "provider": { "description": "The destination to send video to - set to `mux` for Mux.", @@ -3945,7 +4250,8 @@ ] }, "MuxDestinationOptions": { - "description": "Pass additional options to control how Mux processes video. Currently supports playback_policy and passthrough options.", + "deprecated": true, + "description": "**Notice: MuxDestinationOptions, like the Mux destination, is deprecated.** It continues to work, with no behaviour change for existing integrations.\nPass additional options to control how Mux processes video. Currently supports playback_policy and passthrough options.", "properties": { "playbackPolicy": { "description": "Sets the Mux `playback_policy` option. Value is an array of strings - use `public`, `signed`, or both.", @@ -5008,35 +5314,44 @@ "$ref": "#/components/schemas/Edit", "example": { "timeline": { - "soundtrack": { - "src": "https://s3-ap-northeast-1.amazonaws.com/my-bucket/music.mp3", - "effect": "fadeInFadeOut" - }, "background": "#000000", + "fonts": [ + { + "src": "https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm45xW5rygbi49c.ttf" + } + ], "tracks": [ { "clips": [ { "asset": { - "type": "title", + "type": "rich-text", "text": "Hello World", - "style": "minimal" + "font": { + "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", + "size": 64, + "weight": "700", + "color": "#ffffff" + }, + "align": { + "horizontal": "center", + "vertical": "middle" + } }, "start": 0, "length": 4, "transition": { "in": "fade", "out": "fade" - }, - "effect": "slideRight" + } }, { "asset": { "type": "image", - "src": "https://s3-ap-northeast-1.amazonaws.com/my-bucket/my-image.jpg" + "src": "https://shotstack-assets.s3.amazonaws.com/images/earth.jpg" }, - "start": 3, - "length": 4, + "start": 4, + "length": 3, "effect": "zoomIn", "filter": "greyscale" } @@ -5047,8 +5362,7 @@ { "asset": { "type": "video", - "src": "https://s3-ap-northeast-1.amazonaws.com/my-bucket/my-clip-1.mp4", - "trim": 10.5, + "src": "https://shotstack-assets.s3.amazonaws.com/footage/beach.mp4", "transcode": true }, "start": 7, @@ -5057,7 +5371,7 @@ { "asset": { "type": "video", - "src": "https://s3-ap-northeast-1.amazonaws.com/my-bucket/my-clip-2.mp4", + "src": "https://shotstack-assets.s3.amazonaws.com/footage/city-timelapse.mp4", "volume": 0.5 }, "start": 11.5, @@ -5067,6 +5381,19 @@ } } ] + }, + { + "clips": [ + { + "asset": { + "type": "audio", + "src": "https://shotstack-assets.s3.amazonaws.com/music/unminus/lit.mp3", + "effect": "fadeInFadeOut" + }, + "start": 0, + "length": "end" + } + ] } ] }, @@ -5259,7 +5586,7 @@ "example": "2abd5c11-0f3d-4c6d-ba20-235fc9b8e8b7" }, "providerId": { - "description": "The third party id of an asset transferred to an external provider, i.e. Mux, YouTube or S3. If the provider is Shotstack, the providerID is the same as the asset id.", + "description": "The third party id of an asset transferred to an external provider, such as Vimeo or S3. If the provider is Shotstack, the providerID is the same as the asset id.", "type": "string", "example": "a4482cbf-e321-42a2-ac8b-947d26886840" }, @@ -5756,77 +6083,6 @@ ], "type": "object" }, - "RichTextBorder": { - "description": "Border styling properties for the text bounding box.", - "properties": { - "width": { - "description": "The width of the border in pixels. Must be 0 or greater.", - "type": "number", - "minimum": 0, - "default": 0, - "example": 2 - }, - "color": { - "description": "The border color using hexadecimal color notation.", - "type": "string", - "pattern": "^#[A-Fa-f0-9]{6}$", - "default": "#000000", - "example": "#ff0000" - }, - "opacity": { - "description": "The opacity of the border where 1 is opaque and 0 is transparent.", - "type": "number", - "minimum": 0, - "maximum": 1, - "default": 1, - "example": 0.8 - }, - "radius": { - "description": "The border radius in pixels for rounded corners. Must be 0 or greater.", - "type": "number", - "minimum": 0, - "default": 0, - "example": 10 - } - }, - "additionalProperties": false, - "type": "object" - }, - "RichTextPadding": { - "description": "Padding properties for individual sides of the text bounding box.", - "properties": { - "top": { - "description": "Top padding in pixels.", - "type": "number", - "minimum": 0, - "default": 0, - "example": 10 - }, - "right": { - "description": "Right padding in pixels.", - "type": "number", - "minimum": 0, - "default": 0, - "example": 10 - }, - "bottom": { - "description": "Bottom padding in pixels.", - "type": "number", - "minimum": 0, - "default": 0, - "example": 10 - }, - "left": { - "description": "Left padding in pixels.", - "type": "number", - "minimum": 0, - "default": 0, - "example": 10 - } - }, - "additionalProperties": false, - "type": "object" - }, "RichCaptionFont": { "description": "Font properties for rich captions. Defaults to Roboto.", "properties": { @@ -5939,7 +6195,8 @@ "type": "object" }, "TiktokDestinationOptions": { - "description": "Pass additional options to control how TikTok publishes video.", + "deprecated": true, + "description": "**Notice: TiktokDestinationOptions, like the TikTok destination, is deprecated.** It continues to work, with no behaviour change for existing integrations.\nPass additional options to control how TikTok publishes video.", "properties": { "title": { "description": "A title for the video that will be displayed on TikTok.", @@ -5975,7 +6232,8 @@ "type": "object" }, "TiktokDestination": { - "description": "Send videos to TikTok. TikTok credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/tiktok), not in the request.", + "deprecated": true, + "description": "**Notice: The TikTok destination is deprecated.** It continues to work, with no behaviour change for existing integrations.\nSend videos to TikTok. TikTok credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/tiktok), not in the request.", "properties": { "provider": { "description": "The destination to send video to - set to `tiktok` for TikTok.", @@ -6025,7 +6283,7 @@ ] }, "AkamaiNetStorageDestination": { - "description": "Send videos and assets to [Akamai NetStorage](https://techdocs.akamai.com/netstorage-usage/docs). Send files to your NetStorage upload directory with a custom path and filename. Akamai credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/akamai-netstorage), not in the request.", + "description": "Send videos and assets to [Akamai NetStorage](https://techdocs.akamai.com/netstorage/docs). Send files to your NetStorage upload directory with a custom path and filename. Akamai credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/akamai-netstorage), not in the request.", "properties": { "provider": { "description": "The destination to send assets to - set to `akamai-netstorage` for Akamai NetStorage.",