From 41072da63cd2ba891a911d932af3bc8b70c90588 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 21 Oct 2025 09:46:04 +0000
Subject: [PATCH 01/27] feat(api): add GetImageAttributesOptions and
ResponsiveImageAttributes schemas; update resource references in main.yaml;
remove dummy endpoint
---
.stats.yml | 8 +-
aliases.go | 130 ++-
api.md | 34 +-
client.go | 2 -
dummy.go | 101 --
dummy_test.go | 984 ----------------
shared/shared.go | 2886 ++++++++++++++++++++++++++++------------------
7 files changed, 1887 insertions(+), 2258 deletions(-)
delete mode 100644 dummy.go
delete mode 100644 dummy_test.go
diff --git a/.stats.yml b/.stats.yml
index 96e30e1..27ad9e7 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 43
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-c7ad6f552b38f2145781847f8b390fa1ec43068d64e45a33012a97a9299edc10.yml
-openapi_spec_hash: 50f281e91210ad5018ac7e4eee216f56
-config_hash: 74a8263b80c732a2b016177e7d56bb9c
+configured_endpoints: 42
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-0e4fa3c1f9d8cafecb9671fa76c0ff9156c643e05837804679e5e336bad8f4c1.yml
+openapi_spec_hash: 4544b950730b721c252eb519358b8609
+config_hash: 3d7a0bc2844e9fb4797149b233e85770
diff --git a/aliases.go b/aliases.go
index be8fe53..53594e7 100644
--- a/aliases.go
+++ b/aliases.go
@@ -17,7 +17,28 @@ type paramObj = param.APIObject
type Error = apierror.Error
// This is an alias to an internal type.
-type BaseOverlayParam = shared.BaseOverlayParam
+type BaseOverlay = shared.BaseOverlay
+
+// Array of extensions to be applied to the asset. Each extension can be configured
+// with specific parameters based on the extension type.
+//
+// This is an alias to an internal type.
+type Extensions = shared.Extensions
+
+// This is an alias to an internal type.
+type ExtensionUnion = shared.ExtensionUnion
+
+// This is an alias to an internal type.
+type ExtensionRemoveBg = shared.ExtensionRemoveBg
+
+// This is an alias to an internal type.
+type ExtensionRemoveBgOptions = shared.ExtensionRemoveBgOptions
+
+// This is an alias to an internal type.
+type ExtensionAutoTagging = shared.ExtensionAutoTagging
+
+// This is an alias to an internal type.
+type ExtensionAIAutoDescription = shared.ExtensionAIAutoDescription
// Array of extensions to be applied to the asset. Each extension can be configured
// with specific parameters based on the extension type.
@@ -40,8 +61,15 @@ type ExtensionAutoTaggingParam = shared.ExtensionAutoTaggingParam
// This is an alias to an internal type.
type ExtensionAIAutoDescriptionParam = shared.ExtensionAIAutoDescriptionParam
+// Options for generating responsive image attributes including `src`, `srcSet`,
+// and `sizes` for HTML `
` elements. This schema extends `SrcOptions` to add
+// support for responsive image generation with breakpoints.
+//
+// This is an alias to an internal type.
+type GetImageAttributesOptions = shared.GetImageAttributesOptions
+
// This is an alias to an internal type.
-type ImageOverlayParam = shared.ImageOverlayParam
+type ImageOverlay = shared.ImageOverlay
// Specifies an overlay to be applied on the parent image or video. ImageKit
// supports overlays including images, text, videos, subtitles, and solid colors.
@@ -49,10 +77,10 @@ type ImageOverlayParam = shared.ImageOverlayParam
// [Overlay using layers](https://imagekit.io/docs/transformations#overlay-using-layers).
//
// This is an alias to an internal type.
-type OverlayUnionParam = shared.OverlayUnionParam
+type OverlayUnion = shared.OverlayUnion
// This is an alias to an internal type.
-type OverlayPositionParam = shared.OverlayPositionParam
+type OverlayPosition = shared.OverlayPosition
// Specifies the position of the overlay relative to the parent image or video.
// Maps to `lfo` in the URL.
@@ -94,7 +122,7 @@ const OverlayPositionFocusBottomRight = shared.OverlayPositionFocusBottomRight
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
//
// This is an alias to an internal type.
-type OverlayPositionXUnionParam = shared.OverlayPositionXUnionParam
+type OverlayPositionXUnion = shared.OverlayPositionXUnion
// Specifies the y-coordinate of the top-left corner of the base asset where the
// overlay's top-left corner will be positioned. It also accepts arithmetic
@@ -103,10 +131,10 @@ type OverlayPositionXUnionParam = shared.OverlayPositionXUnionParam
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
//
// This is an alias to an internal type.
-type OverlayPositionYUnionParam = shared.OverlayPositionYUnionParam
+type OverlayPositionYUnion = shared.OverlayPositionYUnion
// This is an alias to an internal type.
-type OverlayTimingParam = shared.OverlayTimingParam
+type OverlayTiming = shared.OverlayTiming
// Specifies the duration (in seconds) during which the overlay should appear on
// the base video. Accepts a positive number up to two decimal places (e.g., `20`
@@ -114,7 +142,7 @@ type OverlayTimingParam = shared.OverlayTimingParam
// Applies only if the base asset is a video. Maps to `ldu` in the URL.
//
// This is an alias to an internal type.
-type OverlayTimingDurationUnionParam = shared.OverlayTimingDurationUnionParam
+type OverlayTimingDurationUnion = shared.OverlayTimingDurationUnion
// Specifies the end time (in seconds) for when the overlay should disappear from
// the base video. If both end and duration are provided, duration is ignored.
@@ -123,7 +151,7 @@ type OverlayTimingDurationUnionParam = shared.OverlayTimingDurationUnionParam
// the base asset is a video. Maps to `leo` in the URL.
//
// This is an alias to an internal type.
-type OverlayTimingEndUnionParam = shared.OverlayTimingEndUnionParam
+type OverlayTimingEndUnion = shared.OverlayTimingEndUnion
// Specifies the start time (in seconds) for when the overlay should appear on the
// base video. Accepts a positive number up to two decimal places (e.g., `20` or
@@ -131,13 +159,19 @@ type OverlayTimingEndUnionParam = shared.OverlayTimingEndUnionParam
// Applies only if the base asset is a video. Maps to `lso` in the URL.
//
// This is an alias to an internal type.
-type OverlayTimingStartUnionParam = shared.OverlayTimingStartUnionParam
+type OverlayTimingStartUnion = shared.OverlayTimingStartUnion
+
+// Resulting set of attributes suitable for an HTML `
` element. Useful for
+// enabling responsive image loading with `srcSet` and `sizes`.
+//
+// This is an alias to an internal type.
+type ResponsiveImageAttributes = shared.ResponsiveImageAttributes
// This is an alias to an internal type.
-type SolidColorOverlayParam = shared.SolidColorOverlayParam
+type SolidColorOverlay = shared.SolidColorOverlay
// This is an alias to an internal type.
-type SolidColorOverlayTransformationParam = shared.SolidColorOverlayTransformationParam
+type SolidColorOverlayTransformation = shared.SolidColorOverlayTransformation
// Creates a linear gradient with two colors. Pass `true` for a default gradient,
// or provide a string for a custom gradient. Only works if the base asset is an
@@ -145,7 +179,7 @@ type SolidColorOverlayTransformationParam = shared.SolidColorOverlayTransformati
// [gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
//
// This is an alias to an internal type.
-type SolidColorOverlayTransformationGradientUnionParam = shared.SolidColorOverlayTransformationGradientUnionParam
+type SolidColorOverlayTransformationGradientUnion = shared.SolidColorOverlayTransformationGradientUnion
// This is an alias to an internal type.
type SolidColorOverlayTransformationGradientBoolean = shared.SolidColorOverlayTransformationGradientBoolean
@@ -155,27 +189,27 @@ type SolidColorOverlayTransformationGradientBoolean = shared.SolidColorOverlayTr
// [arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
//
// This is an alias to an internal type.
-type SolidColorOverlayTransformationHeightUnionParam = shared.SolidColorOverlayTransformationHeightUnionParam
+type SolidColorOverlayTransformationHeightUnion = shared.SolidColorOverlayTransformationHeightUnion
// Specifies the corner radius of the solid color overlay. Set to `max` for
// circular or oval shape. See
// [radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
//
// This is an alias to an internal type.
-type SolidColorOverlayTransformationRadiusUnionParam = shared.SolidColorOverlayTransformationRadiusUnionParam
+type SolidColorOverlayTransformationRadiusUnion = shared.SolidColorOverlayTransformationRadiusUnion
// Controls the width of the solid color overlay. Accepts a numeric value or an
// arithmetic expression (e.g., `bw_mul_0.2` or `bh_div_2`). Learn about
// [arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
//
// This is an alias to an internal type.
-type SolidColorOverlayTransformationWidthUnionParam = shared.SolidColorOverlayTransformationWidthUnionParam
+type SolidColorOverlayTransformationWidthUnion = shared.SolidColorOverlayTransformationWidthUnion
// Options for generating ImageKit URLs with transformations. See the
// [Transformations guide](https://imagekit.io/docs/transformations).
//
// This is an alias to an internal type.
-type SrcOptionsParam = shared.SrcOptionsParam
+type SrcOptions = shared.SrcOptions
// Available streaming resolutions for
// [adaptive bitrate streaming](https://imagekit.io/docs/adaptive-bitrate-streaming)
@@ -205,14 +239,14 @@ const StreamingResolution1440 = shared.StreamingResolution1440
const StreamingResolution2160 = shared.StreamingResolution2160
// This is an alias to an internal type.
-type SubtitleOverlayParam = shared.SubtitleOverlayParam
+type SubtitleOverlay = shared.SubtitleOverlay
// Subtitle styling options.
// [Learn more](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
// from the docs.
//
// This is an alias to an internal type.
-type SubtitleOverlayTransformationParam = shared.SubtitleOverlayTransformationParam
+type SubtitleOverlayTransformation = shared.SubtitleOverlayTransformation
// Sets the typography style of the subtitle text. Supports values are `b` for
// bold, `i` for italics, and `b_i` for bold with italics.
@@ -232,10 +266,10 @@ const SubtitleOverlayTransformationTypographyI = shared.SubtitleOverlayTransform
const SubtitleOverlayTransformationTypographyBI = shared.SubtitleOverlayTransformationTypographyBI
// This is an alias to an internal type.
-type TextOverlayParam = shared.TextOverlayParam
+type TextOverlay = shared.TextOverlay
// This is an alias to an internal type.
-type TextOverlayTransformationParam = shared.TextOverlayTransformationParam
+type TextOverlayTransformation = shared.TextOverlayTransformation
// Flip the text overlay horizontally, vertically, or both.
//
@@ -258,7 +292,7 @@ const TextOverlayTransformationFlipVH = shared.TextOverlayTransformationFlipVH
// arithmetic expression.
//
// This is an alias to an internal type.
-type TextOverlayTransformationFontSizeUnionParam = shared.TextOverlayTransformationFontSizeUnionParam
+type TextOverlayTransformationFontSizeUnion = shared.TextOverlayTransformationFontSizeUnion
// Specifies the inner alignment of the text when width is more than the text
// length.
@@ -281,26 +315,26 @@ const TextOverlayTransformationInnerAlignmentCenter = shared.TextOverlayTransfor
// such as `bw_mul_0.2`, or `bh_div_20`.
//
// This is an alias to an internal type.
-type TextOverlayTransformationLineHeightUnionParam = shared.TextOverlayTransformationLineHeightUnionParam
+type TextOverlayTransformationLineHeightUnion = shared.TextOverlayTransformationLineHeightUnion
// Specifies the padding around the overlaid text. Can be provided as a single
// positive integer or multiple values separated by underscores (following CSS
// shorthand order). Arithmetic expressions are also accepted.
//
// This is an alias to an internal type.
-type TextOverlayTransformationPaddingUnionParam = shared.TextOverlayTransformationPaddingUnionParam
+type TextOverlayTransformationPaddingUnion = shared.TextOverlayTransformationPaddingUnion
// Specifies the corner radius of the text overlay. Set to `max` to achieve a
// circular or oval shape.
//
// This is an alias to an internal type.
-type TextOverlayTransformationRadiusUnionParam = shared.TextOverlayTransformationRadiusUnionParam
+type TextOverlayTransformationRadiusUnion = shared.TextOverlayTransformationRadiusUnion
// Specifies the rotation angle of the text overlay. Accepts a numeric value for
// clockwise rotation or a string prefixed with "N" for counter-clockwise rotation.
//
// This is an alias to an internal type.
-type TextOverlayTransformationRotationUnionParam = shared.TextOverlayTransformationRotationUnionParam
+type TextOverlayTransformationRotationUnion = shared.TextOverlayTransformationRotationUnion
// Specifies the maximum width (in pixels) of the overlaid text. The text wraps
// automatically, and arithmetic expressions (e.g., `bw_mul_0.2` or `bh_div_2`) are
@@ -308,7 +342,7 @@ type TextOverlayTransformationRotationUnionParam = shared.TextOverlayTransformat
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
//
// This is an alias to an internal type.
-type TextOverlayTransformationWidthUnionParam = shared.TextOverlayTransformationWidthUnionParam
+type TextOverlayTransformationWidthUnion = shared.TextOverlayTransformationWidthUnion
// The SDK provides easy-to-use names for transformations. These names are
// converted to the corresponding transformation string before being added to the
@@ -318,7 +352,7 @@ type TextOverlayTransformationWidthUnionParam = shared.TextOverlayTransformation
// [Transformations documentation](https://imagekit.io/docs/transformations).
//
// This is an alias to an internal type.
-type TransformationParam = shared.TransformationParam
+type Transformation = shared.Transformation
// Adds an AI-based drop shadow around a foreground object on a transparent or
// removed background. Optionally, control the direction, elevation, and saturation
@@ -328,7 +362,7 @@ type TransformationParam = shared.TransformationParam
// [AI Drop Shadow](https://imagekit.io/docs/ai-transformations#ai-drop-shadow-e-dropshadow).
//
// This is an alias to an internal type.
-type TransformationAIDropShadowUnionParam = shared.TransformationAIDropShadowUnionParam
+type TransformationAIDropShadowUnion = shared.TransformationAIDropShadowUnion
// This is an alias to an internal type.
type TransformationAIDropShadowBoolean = shared.TransformationAIDropShadowBoolean
@@ -339,7 +373,7 @@ type TransformationAIDropShadowBoolean = shared.TransformationAIDropShadowBoolea
// [Image resize and crop – Aspect ratio](https://imagekit.io/docs/image-resize-and-crop#aspect-ratio---ar).
//
// This is an alias to an internal type.
-type TransformationAspectRatioUnionParam = shared.TransformationAspectRatioUnionParam
+type TransformationAspectRatioUnion = shared.TransformationAspectRatioUnion
// Specifies the audio codec, e.g., `aac`, `opus`, or `none`. See
// [Audio codec](https://imagekit.io/docs/video-optimization#audio-codec---ac).
@@ -398,7 +432,7 @@ const TransformationCropModePadExtract = shared.TransformationCropModePadExtract
// [Trim videos – Duration](https://imagekit.io/docs/trim-videos#duration---du).
//
// This is an alias to an internal type.
-type TransformationDurationUnionParam = shared.TransformationDurationUnionParam
+type TransformationDurationUnion = shared.TransformationDurationUnion
// Specifies the end offset (in seconds) for trimming videos, e.g., `5` or `10.5`.
// Typically used with startOffset to define a time window. Arithmetic expressions
@@ -406,7 +440,7 @@ type TransformationDurationUnionParam = shared.TransformationDurationUnionParam
// [Trim videos – End offset](https://imagekit.io/docs/trim-videos#end-offset---eo).
//
// This is an alias to an internal type.
-type TransformationEndOffsetUnionParam = shared.TransformationEndOffsetUnionParam
+type TransformationEndOffsetUnion = shared.TransformationEndOffsetUnion
// Flips or mirrors an image either horizontally, vertically, or both. Acceptable
// values: `h` (horizontal), `v` (vertical), `h_v` (horizontal and vertical), or
@@ -476,7 +510,7 @@ const TransformationFormatOrig = shared.TransformationFormatOrig
// [Gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
//
// This is an alias to an internal type.
-type TransformationGradientUnionParam = shared.TransformationGradientUnionParam
+type TransformationGradientUnion = shared.TransformationGradientUnion
// This is an alias to an internal type.
type TransformationGradientBoolean = shared.TransformationGradientBoolean
@@ -489,7 +523,7 @@ type TransformationGradientBoolean = shared.TransformationGradientBoolean
// [Videos](https://imagekit.io/docs/video-resize-and-crop#height---h)
//
// This is an alias to an internal type.
-type TransformationHeightUnionParam = shared.TransformationHeightUnionParam
+type TransformationHeightUnion = shared.TransformationHeightUnion
// Extracts a specific page or frame from multi-page or layered files (PDF, PSD,
// AI). For example, specify by number (e.g., `2`), a range (e.g., `3-4` for the
@@ -497,14 +531,14 @@ type TransformationHeightUnionParam = shared.TransformationHeightUnionParam
// [Thumbnail extraction](https://imagekit.io/docs/vector-and-animated-images#get-thumbnail-from-psd-pdf-ai-eps-and-animated-files).
//
// This is an alias to an internal type.
-type TransformationPageUnionParam = shared.TransformationPageUnionParam
+type TransformationPageUnion = shared.TransformationPageUnion
// Specifies the corner radius for rounded corners (e.g., 20) or `max` for circular
// or oval shape. See
// [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
//
// This is an alias to an internal type.
-type TransformationRadiusUnionParam = shared.TransformationRadiusUnionParam
+type TransformationRadiusUnion = shared.TransformationRadiusUnion
// Specifies the rotation angle in degrees. Positive values rotate the image
// clockwise; you can also use, for example, `N40` for counterclockwise rotation or
@@ -513,7 +547,7 @@ type TransformationRadiusUnionParam = shared.TransformationRadiusUnionParam
// [Rotate](https://imagekit.io/docs/effects-and-enhancements#rotate---rt).
//
// This is an alias to an internal type.
-type TransformationRotationUnionParam = shared.TransformationRotationUnionParam
+type TransformationRotationUnion = shared.TransformationRotationUnion
// Adds a shadow beneath solid objects in an image with a transparent background.
// For AI-based drop shadows, refer to aiDropShadow. Pass `true` for a default
@@ -521,7 +555,7 @@ type TransformationRotationUnionParam = shared.TransformationRotationUnionParam
// [Shadow](https://imagekit.io/docs/effects-and-enhancements#shadow---e-shadow).
//
// This is an alias to an internal type.
-type TransformationShadowUnionParam = shared.TransformationShadowUnionParam
+type TransformationShadowUnion = shared.TransformationShadowUnion
// This is an alias to an internal type.
type TransformationShadowBoolean = shared.TransformationShadowBoolean
@@ -531,7 +565,7 @@ type TransformationShadowBoolean = shared.TransformationShadowBoolean
// [Sharpen](https://imagekit.io/docs/effects-and-enhancements#sharpen---e-sharpen).
//
// This is an alias to an internal type.
-type TransformationSharpenUnionParam = shared.TransformationSharpenUnionParam
+type TransformationSharpenUnion = shared.TransformationSharpenUnion
// This is an alias to an internal type.
type TransformationSharpenBoolean = shared.TransformationSharpenBoolean
@@ -541,7 +575,7 @@ type TransformationSharpenBoolean = shared.TransformationSharpenBoolean
// [Trim videos – Start offset](https://imagekit.io/docs/trim-videos#start-offset---so).
//
// This is an alias to an internal type.
-type TransformationStartOffsetUnionParam = shared.TransformationStartOffsetUnionParam
+type TransformationStartOffsetUnion = shared.TransformationStartOffsetUnion
// Useful for images with a solid or nearly solid background and a central object.
// This parameter trims the background, leaving only the central object in the
@@ -549,7 +583,7 @@ type TransformationStartOffsetUnionParam = shared.TransformationStartOffsetUnion
// [Trim edges](https://imagekit.io/docs/effects-and-enhancements#trim-edges---t).
//
// This is an alias to an internal type.
-type TransformationTrimUnionParam = shared.TransformationTrimUnionParam
+type TransformationTrimUnion = shared.TransformationTrimUnion
// This is an alias to an internal type.
type TransformationTrimBoolean = shared.TransformationTrimBoolean
@@ -559,7 +593,7 @@ type TransformationTrimBoolean = shared.TransformationTrimBoolean
// [Unsharp Mask](https://imagekit.io/docs/effects-and-enhancements#unsharp-mask---e-usm).
//
// This is an alias to an internal type.
-type TransformationUnsharpMaskUnionParam = shared.TransformationUnsharpMaskUnionParam
+type TransformationUnsharpMaskUnion = shared.TransformationUnsharpMaskUnion
// This is an alias to an internal type.
type TransformationUnsharpMaskBoolean = shared.TransformationUnsharpMaskBoolean
@@ -589,31 +623,31 @@ const TransformationVideoCodecNone = shared.TransformationVideoCodecNone
// [Videos](https://imagekit.io/docs/video-resize-and-crop#width---w)
//
// This is an alias to an internal type.
-type TransformationWidthUnionParam = shared.TransformationWidthUnionParam
+type TransformationWidthUnion = shared.TransformationWidthUnion
// Focus using cropped image coordinates - X coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
//
// This is an alias to an internal type.
-type TransformationXUnionParam = shared.TransformationXUnionParam
+type TransformationXUnion = shared.TransformationXUnion
// Focus using cropped image coordinates - X center coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
//
// This is an alias to an internal type.
-type TransformationXCenterUnionParam = shared.TransformationXCenterUnionParam
+type TransformationXCenterUnion = shared.TransformationXCenterUnion
// Focus using cropped image coordinates - Y coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
//
// This is an alias to an internal type.
-type TransformationYUnionParam = shared.TransformationYUnionParam
+type TransformationYUnion = shared.TransformationYUnion
// Focus using cropped image coordinates - Y center coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
//
// This is an alias to an internal type.
-type TransformationYCenterUnionParam = shared.TransformationYCenterUnionParam
+type TransformationYCenterUnion = shared.TransformationYCenterUnion
// By default, the transformation string is added as a query parameter in the URL,
// e.g., `?tr=w-100,h-100`. If you want to add the transformation string in the
@@ -630,4 +664,4 @@ const TransformationPositionPath = shared.TransformationPositionPath
const TransformationPositionQuery = shared.TransformationPositionQuery
// This is an alias to an internal type.
-type VideoOverlayParam = shared.VideoOverlayParam
+type VideoOverlay = shared.VideoOverlay
diff --git a/api.md b/api.md
index d1fe4eb..b66fbd8 100644
--- a/api.md
+++ b/api.md
@@ -1,22 +1,28 @@
# Shared Params Types
-- shared.BaseOverlayParam
- shared.ExtensionsParam
-- shared.ImageOverlayParam
-- shared.OverlayUnionParam
-- shared.OverlayPositionParam
-- shared.OverlayTimingParam
-- shared.SolidColorOverlayParam
-- shared.SolidColorOverlayTransformationParam
-- shared.SrcOptionsParam
+
+# Shared Response Types
+
+- shared.BaseOverlay
+- shared.Extensions
+- shared.GetImageAttributesOptions
+- shared.ImageOverlay
+- shared.OverlayUnion
+- shared.OverlayPosition
+- shared.OverlayTiming
+- shared.ResponsiveImageAttributes
+- shared.SolidColorOverlay
+- shared.SolidColorOverlayTransformation
+- shared.SrcOptions
- shared.StreamingResolution
-- shared.SubtitleOverlayParam
-- shared.SubtitleOverlayTransformationParam
-- shared.TextOverlayParam
-- shared.TextOverlayTransformationParam
-- shared.TransformationParam
+- shared.SubtitleOverlay
+- shared.SubtitleOverlayTransformation
+- shared.TextOverlay
+- shared.TextOverlayTransformation
+- shared.Transformation
- shared.TransformationPosition
-- shared.VideoOverlayParam
+- shared.VideoOverlay
# CustomMetadataFields
diff --git a/client.go b/client.go
index f53998f..e275d74 100644
--- a/client.go
+++ b/client.go
@@ -18,7 +18,6 @@ import (
// directly, and instead use the [NewClient] method instead.
type Client struct {
Options []option.RequestOption
- Dummy DummyService
CustomMetadataFields CustomMetadataFieldService
Files FileService
Assets AssetService
@@ -61,7 +60,6 @@ func NewClient(opts ...option.RequestOption) (r Client) {
r = Client{Options: opts}
- r.Dummy = NewDummyService(opts...)
r.CustomMetadataFields = NewCustomMetadataFieldService(opts...)
r.Files = NewFileService(opts...)
r.Assets = NewAssetService(opts...)
diff --git a/dummy.go b/dummy.go
deleted file mode 100644
index 9f26efb..0000000
--- a/dummy.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-package imagekit
-
-import (
- "context"
- "net/http"
- "slices"
-
- "github.com/imagekit-developer/imagekit-go/v2/internal/apijson"
- "github.com/imagekit-developer/imagekit-go/v2/internal/requestconfig"
- "github.com/imagekit-developer/imagekit-go/v2/option"
- "github.com/imagekit-developer/imagekit-go/v2/packages/param"
- "github.com/imagekit-developer/imagekit-go/v2/shared"
-)
-
-// DummyService contains methods and other services that help with interacting with
-// the ImageKit API.
-//
-// Note, unlike clients, this service does not read variables from the environment
-// automatically. You should not instantiate this service directly, and instead use
-// the [NewDummyService] method instead.
-type DummyService struct {
- Options []option.RequestOption
-}
-
-// NewDummyService generates a new service that applies the given options to each
-// request. These options are applied after the parent client's options (if there
-// is one), and before any request-specific options.
-func NewDummyService(opts ...option.RequestOption) (r DummyService) {
- r = DummyService{}
- r.Options = opts
- return
-}
-
-// Internal test endpoint for SDK generation purposes only. This endpoint
-// demonstrates usage of all shared models defined in the Stainless configuration
-// and is not intended for public consumption.
-func (r *DummyService) New(ctx context.Context, body DummyNewParams, opts ...option.RequestOption) (err error) {
- opts = slices.Concat(r.Options, opts)
- opts = append([]option.RequestOption{option.WithHeader("Accept", "")}, opts...)
- path := "v1/dummy/test"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, nil, opts...)
- return
-}
-
-type DummyNewParams struct {
- BaseOverlay shared.BaseOverlayParam `json:"baseOverlay,omitzero"`
- // Array of extensions to be applied to the asset. Each extension can be configured
- // with specific parameters based on the extension type.
- Extensions shared.ExtensionsParam `json:"extensions,omitzero"`
- ImageOverlay shared.ImageOverlayParam `json:"imageOverlay,omitzero"`
- // Specifies an overlay to be applied on the parent image or video. ImageKit
- // supports overlays including images, text, videos, subtitles, and solid colors.
- // See
- // [Overlay using layers](https://imagekit.io/docs/transformations#overlay-using-layers).
- Overlay shared.OverlayUnionParam `json:"overlay,omitzero"`
- OverlayPosition shared.OverlayPositionParam `json:"overlayPosition,omitzero"`
- OverlayTiming shared.OverlayTimingParam `json:"overlayTiming,omitzero"`
- SolidColorOverlay shared.SolidColorOverlayParam `json:"solidColorOverlay,omitzero"`
- SolidColorOverlayTransformation shared.SolidColorOverlayTransformationParam `json:"solidColorOverlayTransformation,omitzero"`
- // Options for generating ImageKit URLs with transformations. See the
- // [Transformations guide](https://imagekit.io/docs/transformations).
- SrcOptions shared.SrcOptionsParam `json:"srcOptions,omitzero"`
- // Available streaming resolutions for
- // [adaptive bitrate streaming](https://imagekit.io/docs/adaptive-bitrate-streaming)
- //
- // Any of "240", "360", "480", "720", "1080", "1440", "2160".
- StreamingResolution shared.StreamingResolution `json:"streamingResolution,omitzero"`
- SubtitleOverlay shared.SubtitleOverlayParam `json:"subtitleOverlay,omitzero"`
- // Subtitle styling options.
- // [Learn more](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- // from the docs.
- SubtitleOverlayTransformation shared.SubtitleOverlayTransformationParam `json:"subtitleOverlayTransformation,omitzero"`
- TextOverlay shared.TextOverlayParam `json:"textOverlay,omitzero"`
- TextOverlayTransformation shared.TextOverlayTransformationParam `json:"textOverlayTransformation,omitzero"`
- // The SDK provides easy-to-use names for transformations. These names are
- // converted to the corresponding transformation string before being added to the
- // URL. SDKs are updated regularly to support new transformations. If you want to
- // use a transformation that is not supported by the SDK, You can use the `raw`
- // parameter to pass the transformation string directly. See the
- // [Transformations documentation](https://imagekit.io/docs/transformations).
- Transformation shared.TransformationParam `json:"transformation,omitzero"`
- // By default, the transformation string is added as a query parameter in the URL,
- // e.g., `?tr=w-100,h-100`. If you want to add the transformation string in the
- // path of the URL, set this to `path`. Learn more in the
- // [Transformations guide](https://imagekit.io/docs/transformations).
- //
- // Any of "path", "query".
- TransformationPosition shared.TransformationPosition `json:"transformationPosition,omitzero"`
- VideoOverlay shared.VideoOverlayParam `json:"videoOverlay,omitzero"`
- paramObj
-}
-
-func (r DummyNewParams) MarshalJSON() (data []byte, err error) {
- type shadow DummyNewParams
- return param.MarshalObject(r, (*shadow)(&r))
-}
-func (r *DummyNewParams) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
-}
diff --git a/dummy_test.go b/dummy_test.go
deleted file mode 100644
index 0548e6a..0000000
--- a/dummy_test.go
+++ /dev/null
@@ -1,984 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-package imagekit_test
-
-import (
- "context"
- "errors"
- "os"
- "testing"
-
- "github.com/imagekit-developer/imagekit-go/v2"
- "github.com/imagekit-developer/imagekit-go/v2/internal/testutil"
- "github.com/imagekit-developer/imagekit-go/v2/option"
- "github.com/imagekit-developer/imagekit-go/v2/shared"
-)
-
-func TestDummyNewWithOptionalParams(t *testing.T) {
- t.Skip("Prism tests are disabled")
- baseURL := "http://localhost:4010"
- if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
- baseURL = envURL
- }
- if !testutil.CheckTestServer(t, baseURL) {
- return
- }
- client := imagekit.NewClient(
- option.WithBaseURL(baseURL),
- option.WithPrivateKey("My Private Key"),
- option.WithPassword("My Password"),
- )
- err := client.Dummy.New(context.TODO(), imagekit.DummyNewParams{
- BaseOverlay: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Extensions: shared.ExtensionsParam{shared.ExtensionUnionParam{
- OfRemoveBg: &shared.ExtensionRemoveBgParam{
- Options: shared.ExtensionRemoveBgOptionsParam{
- AddShadow: imagekit.Bool(true),
- BgColor: imagekit.String("bg_color"),
- BgImageURL: imagekit.String("bg_image_url"),
- Semitransparency: imagekit.Bool(true),
- },
- },
- }, shared.ExtensionUnionParam{
- OfAutoTagging: &shared.ExtensionAutoTaggingParam{
- MaxTags: 5,
- MinConfidence: 95,
- Name: "google-auto-tagging",
- },
- }, shared.ExtensionUnionParam{
- OfAIAutoDescription: &shared.ExtensionAIAutoDescriptionParam{},
- }},
- ImageOverlay: shared.ImageOverlayParam{
- BaseOverlayParam: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Input: "input",
- Encoding: "auto",
- Transformation: []shared.TransformationParam{{
- AIChangeBackground: imagekit.String("aiChangeBackground"),
- AIDropShadow: shared.TransformationAIDropShadowUnionParam{
- OfTransformationAIDropShadowBoolean: imagekit.Bool(true),
- },
- AIEdit: imagekit.String("aiEdit"),
- AIRemoveBackground: true,
- AIRemoveBackgroundExternal: true,
- AIRetouch: true,
- AIUpscale: true,
- AIVariation: true,
- AspectRatio: shared.TransformationAspectRatioUnionParam{
- OfString: imagekit.String("4:3"),
- },
- AudioCodec: shared.TransformationAudioCodecAac,
- Background: imagekit.String("red"),
- Blur: imagekit.Float(10),
- Border: imagekit.String("5_FF0000"),
- ColorProfile: imagekit.Bool(true),
- ContrastStretch: true,
- Crop: shared.TransformationCropForce,
- CropMode: shared.TransformationCropModePadResize,
- DefaultImage: imagekit.String("defaultImage"),
- Dpr: imagekit.Float(2),
- Duration: shared.TransformationDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- EndOffset: shared.TransformationEndOffsetUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Flip: shared.TransformationFlipH,
- Focus: imagekit.String("center"),
- Format: shared.TransformationFormatAuto,
- Gradient: shared.TransformationGradientUnionParam{
- OfTransformationGradientBoolean: imagekit.Bool(true),
- },
- Grayscale: true,
- Height: shared.TransformationHeightUnionParam{
- OfFloat: imagekit.Float(200),
- },
- Lossless: imagekit.Bool(true),
- Metadata: imagekit.Bool(true),
- Named: imagekit.String("named"),
- Opacity: imagekit.Float(0),
- Original: imagekit.Bool(true),
- Overlay: shared.OverlayUnionParam{
- OfText: &shared.TextOverlayParam{
- BaseOverlayParam: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Text: "text",
- Encoding: "auto",
- Transformation: []shared.TextOverlayTransformationParam{{
- Alpha: imagekit.Float(1),
- Background: imagekit.String("background"),
- Flip: shared.TextOverlayTransformationFlipH,
- FontColor: imagekit.String("fontColor"),
- FontFamily: imagekit.String("fontFamily"),
- FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
- OfFloat: imagekit.Float(0),
- },
- InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
- LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Padding: shared.TextOverlayTransformationPaddingUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Radius: shared.TextOverlayTransformationRadiusUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Rotation: shared.TextOverlayTransformationRotationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Typography: imagekit.String("typography"),
- Width: shared.TextOverlayTransformationWidthUnionParam{
- OfFloat: imagekit.Float(0),
- },
- }},
- },
- },
- Page: shared.TransformationPageUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Progressive: imagekit.Bool(true),
- Quality: imagekit.Float(80),
- Radius: shared.TransformationRadiusUnionParam{
- OfFloat: imagekit.Float(20),
- },
- Raw: imagekit.String("raw"),
- Rotation: shared.TransformationRotationUnionParam{
- OfFloat: imagekit.Float(90),
- },
- Shadow: shared.TransformationShadowUnionParam{
- OfTransformationShadowBoolean: imagekit.Bool(true),
- },
- Sharpen: shared.TransformationSharpenUnionParam{
- OfTransformationSharpenBoolean: imagekit.Bool(true),
- },
- StartOffset: shared.TransformationStartOffsetUnionParam{
- OfFloat: imagekit.Float(0),
- },
- StreamingResolutions: []shared.StreamingResolution{shared.StreamingResolution240},
- Trim: shared.TransformationTrimUnionParam{
- OfTransformationTrimBoolean: imagekit.Bool(true),
- },
- UnsharpMask: shared.TransformationUnsharpMaskUnionParam{
- OfTransformationUnsharpMaskBoolean: imagekit.Bool(true),
- },
- VideoCodec: shared.TransformationVideoCodecH264,
- Width: shared.TransformationWidthUnionParam{
- OfFloat: imagekit.Float(300),
- },
- X: shared.TransformationXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- XCenter: shared.TransformationXCenterUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.TransformationYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- YCenter: shared.TransformationYCenterUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Zoom: imagekit.Float(0),
- }},
- },
- Overlay: shared.OverlayUnionParam{
- OfText: &shared.TextOverlayParam{
- BaseOverlayParam: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Text: "text",
- Encoding: "auto",
- Transformation: []shared.TextOverlayTransformationParam{{
- Alpha: imagekit.Float(1),
- Background: imagekit.String("background"),
- Flip: shared.TextOverlayTransformationFlipH,
- FontColor: imagekit.String("fontColor"),
- FontFamily: imagekit.String("fontFamily"),
- FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
- OfFloat: imagekit.Float(0),
- },
- InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
- LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Padding: shared.TextOverlayTransformationPaddingUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Radius: shared.TextOverlayTransformationRadiusUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Rotation: shared.TextOverlayTransformationRotationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Typography: imagekit.String("typography"),
- Width: shared.TextOverlayTransformationWidthUnionParam{
- OfFloat: imagekit.Float(0),
- },
- }},
- },
- },
- OverlayPosition: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- OverlayTiming: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- SolidColorOverlay: shared.SolidColorOverlayParam{
- BaseOverlayParam: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Color: "color",
- Transformation: []shared.SolidColorOverlayTransformationParam{{
- Alpha: imagekit.Float(1),
- Background: imagekit.String("background"),
- Gradient: shared.SolidColorOverlayTransformationGradientUnionParam{
- OfSolidColorOverlayTransformationGradientBoolean: imagekit.Bool(true),
- },
- Height: shared.SolidColorOverlayTransformationHeightUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Radius: shared.SolidColorOverlayTransformationRadiusUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Width: shared.SolidColorOverlayTransformationWidthUnionParam{
- OfFloat: imagekit.Float(0),
- },
- }},
- },
- SolidColorOverlayTransformation: shared.SolidColorOverlayTransformationParam{
- Alpha: imagekit.Float(1),
- Background: imagekit.String("background"),
- Gradient: shared.SolidColorOverlayTransformationGradientUnionParam{
- OfSolidColorOverlayTransformationGradientBoolean: imagekit.Bool(true),
- },
- Height: shared.SolidColorOverlayTransformationHeightUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Radius: shared.SolidColorOverlayTransformationRadiusUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Width: shared.SolidColorOverlayTransformationWidthUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- SrcOptions: shared.SrcOptionsParam{
- Src: "/my-image.jpg",
- URLEndpoint: "https://ik.imagekit.io/demo",
- ExpiresIn: imagekit.Float(0),
- QueryParameters: map[string]string{
- "foo": "string",
- },
- Signed: imagekit.Bool(true),
- Transformation: []shared.TransformationParam{{
- AIChangeBackground: imagekit.String("aiChangeBackground"),
- AIDropShadow: shared.TransformationAIDropShadowUnionParam{
- OfTransformationAIDropShadowBoolean: imagekit.Bool(true),
- },
- AIEdit: imagekit.String("aiEdit"),
- AIRemoveBackground: true,
- AIRemoveBackgroundExternal: true,
- AIRetouch: true,
- AIUpscale: true,
- AIVariation: true,
- AspectRatio: shared.TransformationAspectRatioUnionParam{
- OfString: imagekit.String("4:3"),
- },
- AudioCodec: shared.TransformationAudioCodecAac,
- Background: imagekit.String("red"),
- Blur: imagekit.Float(10),
- Border: imagekit.String("5_FF0000"),
- ColorProfile: imagekit.Bool(true),
- ContrastStretch: true,
- Crop: shared.TransformationCropForce,
- CropMode: shared.TransformationCropModePadResize,
- DefaultImage: imagekit.String("defaultImage"),
- Dpr: imagekit.Float(2),
- Duration: shared.TransformationDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- EndOffset: shared.TransformationEndOffsetUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Flip: shared.TransformationFlipH,
- Focus: imagekit.String("center"),
- Format: shared.TransformationFormatAuto,
- Gradient: shared.TransformationGradientUnionParam{
- OfTransformationGradientBoolean: imagekit.Bool(true),
- },
- Grayscale: true,
- Height: shared.TransformationHeightUnionParam{
- OfFloat: imagekit.Float(200),
- },
- Lossless: imagekit.Bool(true),
- Metadata: imagekit.Bool(true),
- Named: imagekit.String("named"),
- Opacity: imagekit.Float(0),
- Original: imagekit.Bool(true),
- Overlay: shared.OverlayUnionParam{
- OfText: &shared.TextOverlayParam{
- BaseOverlayParam: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Text: "text",
- Encoding: "auto",
- Transformation: []shared.TextOverlayTransformationParam{{
- Alpha: imagekit.Float(1),
- Background: imagekit.String("background"),
- Flip: shared.TextOverlayTransformationFlipH,
- FontColor: imagekit.String("fontColor"),
- FontFamily: imagekit.String("fontFamily"),
- FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
- OfFloat: imagekit.Float(0),
- },
- InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
- LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Padding: shared.TextOverlayTransformationPaddingUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Radius: shared.TextOverlayTransformationRadiusUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Rotation: shared.TextOverlayTransformationRotationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Typography: imagekit.String("typography"),
- Width: shared.TextOverlayTransformationWidthUnionParam{
- OfFloat: imagekit.Float(0),
- },
- }},
- },
- },
- Page: shared.TransformationPageUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Progressive: imagekit.Bool(true),
- Quality: imagekit.Float(80),
- Radius: shared.TransformationRadiusUnionParam{
- OfFloat: imagekit.Float(20),
- },
- Raw: imagekit.String("raw"),
- Rotation: shared.TransformationRotationUnionParam{
- OfFloat: imagekit.Float(90),
- },
- Shadow: shared.TransformationShadowUnionParam{
- OfTransformationShadowBoolean: imagekit.Bool(true),
- },
- Sharpen: shared.TransformationSharpenUnionParam{
- OfTransformationSharpenBoolean: imagekit.Bool(true),
- },
- StartOffset: shared.TransformationStartOffsetUnionParam{
- OfFloat: imagekit.Float(0),
- },
- StreamingResolutions: []shared.StreamingResolution{shared.StreamingResolution240},
- Trim: shared.TransformationTrimUnionParam{
- OfTransformationTrimBoolean: imagekit.Bool(true),
- },
- UnsharpMask: shared.TransformationUnsharpMaskUnionParam{
- OfTransformationUnsharpMaskBoolean: imagekit.Bool(true),
- },
- VideoCodec: shared.TransformationVideoCodecH264,
- Width: shared.TransformationWidthUnionParam{
- OfFloat: imagekit.Float(300),
- },
- X: shared.TransformationXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- XCenter: shared.TransformationXCenterUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.TransformationYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- YCenter: shared.TransformationYCenterUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Zoom: imagekit.Float(0),
- }},
- TransformationPosition: shared.TransformationPositionPath,
- },
- StreamingResolution: shared.StreamingResolution240,
- SubtitleOverlay: shared.SubtitleOverlayParam{
- BaseOverlayParam: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Input: "input",
- Encoding: "auto",
- Transformation: []shared.SubtitleOverlayTransformationParam{{
- Background: imagekit.String("background"),
- Color: imagekit.String("color"),
- FontFamily: imagekit.String("fontFamily"),
- FontOutline: imagekit.String("fontOutline"),
- FontShadow: imagekit.String("fontShadow"),
- FontSize: imagekit.Float(0),
- Typography: shared.SubtitleOverlayTransformationTypographyB,
- }},
- },
- SubtitleOverlayTransformation: shared.SubtitleOverlayTransformationParam{
- Background: imagekit.String("background"),
- Color: imagekit.String("color"),
- FontFamily: imagekit.String("fontFamily"),
- FontOutline: imagekit.String("fontOutline"),
- FontShadow: imagekit.String("fontShadow"),
- FontSize: imagekit.Float(0),
- Typography: shared.SubtitleOverlayTransformationTypographyB,
- },
- TextOverlay: shared.TextOverlayParam{
- BaseOverlayParam: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Text: "text",
- Encoding: "auto",
- Transformation: []shared.TextOverlayTransformationParam{{
- Alpha: imagekit.Float(1),
- Background: imagekit.String("background"),
- Flip: shared.TextOverlayTransformationFlipH,
- FontColor: imagekit.String("fontColor"),
- FontFamily: imagekit.String("fontFamily"),
- FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
- OfFloat: imagekit.Float(0),
- },
- InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
- LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Padding: shared.TextOverlayTransformationPaddingUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Radius: shared.TextOverlayTransformationRadiusUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Rotation: shared.TextOverlayTransformationRotationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Typography: imagekit.String("typography"),
- Width: shared.TextOverlayTransformationWidthUnionParam{
- OfFloat: imagekit.Float(0),
- },
- }},
- },
- TextOverlayTransformation: shared.TextOverlayTransformationParam{
- Alpha: imagekit.Float(1),
- Background: imagekit.String("background"),
- Flip: shared.TextOverlayTransformationFlipH,
- FontColor: imagekit.String("fontColor"),
- FontFamily: imagekit.String("fontFamily"),
- FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
- OfFloat: imagekit.Float(0),
- },
- InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
- LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Padding: shared.TextOverlayTransformationPaddingUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Radius: shared.TextOverlayTransformationRadiusUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Rotation: shared.TextOverlayTransformationRotationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Typography: imagekit.String("typography"),
- Width: shared.TextOverlayTransformationWidthUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Transformation: shared.TransformationParam{
- AIChangeBackground: imagekit.String("aiChangeBackground"),
- AIDropShadow: shared.TransformationAIDropShadowUnionParam{
- OfTransformationAIDropShadowBoolean: imagekit.Bool(true),
- },
- AIEdit: imagekit.String("aiEdit"),
- AIRemoveBackground: true,
- AIRemoveBackgroundExternal: true,
- AIRetouch: true,
- AIUpscale: true,
- AIVariation: true,
- AspectRatio: shared.TransformationAspectRatioUnionParam{
- OfString: imagekit.String("4:3"),
- },
- AudioCodec: shared.TransformationAudioCodecAac,
- Background: imagekit.String("red"),
- Blur: imagekit.Float(10),
- Border: imagekit.String("5_FF0000"),
- ColorProfile: imagekit.Bool(true),
- ContrastStretch: true,
- Crop: shared.TransformationCropForce,
- CropMode: shared.TransformationCropModePadResize,
- DefaultImage: imagekit.String("defaultImage"),
- Dpr: imagekit.Float(2),
- Duration: shared.TransformationDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- EndOffset: shared.TransformationEndOffsetUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Flip: shared.TransformationFlipH,
- Focus: imagekit.String("center"),
- Format: shared.TransformationFormatAuto,
- Gradient: shared.TransformationGradientUnionParam{
- OfTransformationGradientBoolean: imagekit.Bool(true),
- },
- Grayscale: true,
- Height: shared.TransformationHeightUnionParam{
- OfFloat: imagekit.Float(200),
- },
- Lossless: imagekit.Bool(true),
- Metadata: imagekit.Bool(true),
- Named: imagekit.String("named"),
- Opacity: imagekit.Float(0),
- Original: imagekit.Bool(true),
- Overlay: shared.OverlayUnionParam{
- OfText: &shared.TextOverlayParam{
- BaseOverlayParam: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Text: "text",
- Encoding: "auto",
- Transformation: []shared.TextOverlayTransformationParam{{
- Alpha: imagekit.Float(1),
- Background: imagekit.String("background"),
- Flip: shared.TextOverlayTransformationFlipH,
- FontColor: imagekit.String("fontColor"),
- FontFamily: imagekit.String("fontFamily"),
- FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
- OfFloat: imagekit.Float(0),
- },
- InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
- LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Padding: shared.TextOverlayTransformationPaddingUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Radius: shared.TextOverlayTransformationRadiusUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Rotation: shared.TextOverlayTransformationRotationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Typography: imagekit.String("typography"),
- Width: shared.TextOverlayTransformationWidthUnionParam{
- OfFloat: imagekit.Float(0),
- },
- }},
- },
- },
- Page: shared.TransformationPageUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Progressive: imagekit.Bool(true),
- Quality: imagekit.Float(80),
- Radius: shared.TransformationRadiusUnionParam{
- OfFloat: imagekit.Float(20),
- },
- Raw: imagekit.String("raw"),
- Rotation: shared.TransformationRotationUnionParam{
- OfFloat: imagekit.Float(90),
- },
- Shadow: shared.TransformationShadowUnionParam{
- OfTransformationShadowBoolean: imagekit.Bool(true),
- },
- Sharpen: shared.TransformationSharpenUnionParam{
- OfTransformationSharpenBoolean: imagekit.Bool(true),
- },
- StartOffset: shared.TransformationStartOffsetUnionParam{
- OfFloat: imagekit.Float(0),
- },
- StreamingResolutions: []shared.StreamingResolution{shared.StreamingResolution240},
- Trim: shared.TransformationTrimUnionParam{
- OfTransformationTrimBoolean: imagekit.Bool(true),
- },
- UnsharpMask: shared.TransformationUnsharpMaskUnionParam{
- OfTransformationUnsharpMaskBoolean: imagekit.Bool(true),
- },
- VideoCodec: shared.TransformationVideoCodecH264,
- Width: shared.TransformationWidthUnionParam{
- OfFloat: imagekit.Float(300),
- },
- X: shared.TransformationXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- XCenter: shared.TransformationXCenterUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.TransformationYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- YCenter: shared.TransformationYCenterUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Zoom: imagekit.Float(0),
- },
- TransformationPosition: shared.TransformationPositionPath,
- VideoOverlay: shared.VideoOverlayParam{
- BaseOverlayParam: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Input: "input",
- Encoding: "auto",
- Transformation: []shared.TransformationParam{{
- AIChangeBackground: imagekit.String("aiChangeBackground"),
- AIDropShadow: shared.TransformationAIDropShadowUnionParam{
- OfTransformationAIDropShadowBoolean: imagekit.Bool(true),
- },
- AIEdit: imagekit.String("aiEdit"),
- AIRemoveBackground: true,
- AIRemoveBackgroundExternal: true,
- AIRetouch: true,
- AIUpscale: true,
- AIVariation: true,
- AspectRatio: shared.TransformationAspectRatioUnionParam{
- OfString: imagekit.String("4:3"),
- },
- AudioCodec: shared.TransformationAudioCodecAac,
- Background: imagekit.String("red"),
- Blur: imagekit.Float(10),
- Border: imagekit.String("5_FF0000"),
- ColorProfile: imagekit.Bool(true),
- ContrastStretch: true,
- Crop: shared.TransformationCropForce,
- CropMode: shared.TransformationCropModePadResize,
- DefaultImage: imagekit.String("defaultImage"),
- Dpr: imagekit.Float(2),
- Duration: shared.TransformationDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- EndOffset: shared.TransformationEndOffsetUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Flip: shared.TransformationFlipH,
- Focus: imagekit.String("center"),
- Format: shared.TransformationFormatAuto,
- Gradient: shared.TransformationGradientUnionParam{
- OfTransformationGradientBoolean: imagekit.Bool(true),
- },
- Grayscale: true,
- Height: shared.TransformationHeightUnionParam{
- OfFloat: imagekit.Float(200),
- },
- Lossless: imagekit.Bool(true),
- Metadata: imagekit.Bool(true),
- Named: imagekit.String("named"),
- Opacity: imagekit.Float(0),
- Original: imagekit.Bool(true),
- Overlay: shared.OverlayUnionParam{
- OfText: &shared.TextOverlayParam{
- BaseOverlayParam: shared.BaseOverlayParam{
- Position: shared.OverlayPositionParam{
- Focus: shared.OverlayPositionFocusCenter,
- X: shared.OverlayPositionXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.OverlayPositionYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- Timing: shared.OverlayTimingParam{
- Duration: shared.OverlayTimingDurationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- End: shared.OverlayTimingEndUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Start: shared.OverlayTimingStartUnionParam{
- OfFloat: imagekit.Float(0),
- },
- },
- },
- Text: "text",
- Encoding: "auto",
- Transformation: []shared.TextOverlayTransformationParam{{
- Alpha: imagekit.Float(1),
- Background: imagekit.String("background"),
- Flip: shared.TextOverlayTransformationFlipH,
- FontColor: imagekit.String("fontColor"),
- FontFamily: imagekit.String("fontFamily"),
- FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
- OfFloat: imagekit.Float(0),
- },
- InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
- LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Padding: shared.TextOverlayTransformationPaddingUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Radius: shared.TextOverlayTransformationRadiusUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Rotation: shared.TextOverlayTransformationRotationUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Typography: imagekit.String("typography"),
- Width: shared.TextOverlayTransformationWidthUnionParam{
- OfFloat: imagekit.Float(0),
- },
- }},
- },
- },
- Page: shared.TransformationPageUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Progressive: imagekit.Bool(true),
- Quality: imagekit.Float(80),
- Radius: shared.TransformationRadiusUnionParam{
- OfFloat: imagekit.Float(20),
- },
- Raw: imagekit.String("raw"),
- Rotation: shared.TransformationRotationUnionParam{
- OfFloat: imagekit.Float(90),
- },
- Shadow: shared.TransformationShadowUnionParam{
- OfTransformationShadowBoolean: imagekit.Bool(true),
- },
- Sharpen: shared.TransformationSharpenUnionParam{
- OfTransformationSharpenBoolean: imagekit.Bool(true),
- },
- StartOffset: shared.TransformationStartOffsetUnionParam{
- OfFloat: imagekit.Float(0),
- },
- StreamingResolutions: []shared.StreamingResolution{shared.StreamingResolution240},
- Trim: shared.TransformationTrimUnionParam{
- OfTransformationTrimBoolean: imagekit.Bool(true),
- },
- UnsharpMask: shared.TransformationUnsharpMaskUnionParam{
- OfTransformationUnsharpMaskBoolean: imagekit.Bool(true),
- },
- VideoCodec: shared.TransformationVideoCodecH264,
- Width: shared.TransformationWidthUnionParam{
- OfFloat: imagekit.Float(300),
- },
- X: shared.TransformationXUnionParam{
- OfFloat: imagekit.Float(0),
- },
- XCenter: shared.TransformationXCenterUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Y: shared.TransformationYUnionParam{
- OfFloat: imagekit.Float(0),
- },
- YCenter: shared.TransformationYCenterUnionParam{
- OfFloat: imagekit.Float(0),
- },
- Zoom: imagekit.Float(0),
- }},
- },
- })
- if err != nil {
- var apierr *imagekit.Error
- if errors.As(err, &apierr) {
- t.Log(string(apierr.DumpRequest(true)))
- }
- t.Fatalf("err should be nil: %s", err.Error())
- }
-}
diff --git a/shared/shared.go b/shared/shared.go
index 831548c..a598bfe 100644
--- a/shared/shared.go
+++ b/shared/shared.go
@@ -3,8 +3,11 @@
package shared
import (
+ "encoding/json"
+
"github.com/imagekit-developer/imagekit-go/v2/internal/apijson"
"github.com/imagekit-developer/imagekit-go/v2/packages/param"
+ "github.com/imagekit-developer/imagekit-go/v2/packages/respjson"
"github.com/imagekit-developer/imagekit-go/v2/shared/constant"
)
@@ -14,17 +17,161 @@ type paramUnion = param.APIUnion
// aliased to make [param.APIObject] private when embedding
type paramObj = param.APIObject
-type BaseOverlayParam struct {
- Position OverlayPositionParam `json:"position,omitzero"`
- Timing OverlayTimingParam `json:"timing,omitzero"`
- paramObj
+type BaseOverlay struct {
+ Position OverlayPosition `json:"position"`
+ Timing OverlayTiming `json:"timing"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Position respjson.Field
+ Timing respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r BaseOverlay) RawJSON() string { return r.JSON.raw }
+func (r *BaseOverlay) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-func (r BaseOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow BaseOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
+type Extensions []ExtensionUnion
+
+// ExtensionUnion contains all possible properties and values from
+// [ExtensionRemoveBg], [ExtensionAutoTagging], [ExtensionAIAutoDescription].
+//
+// Use the [ExtensionUnion.AsAny] method to switch on the variant.
+//
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+type ExtensionUnion struct {
+ // Any of "remove-bg", nil, "ai-auto-description".
+ Name string `json:"name"`
+ // This field is from variant [ExtensionRemoveBg].
+ Options ExtensionRemoveBgOptions `json:"options"`
+ // This field is from variant [ExtensionAutoTagging].
+ MaxTags int64 `json:"maxTags"`
+ // This field is from variant [ExtensionAutoTagging].
+ MinConfidence int64 `json:"minConfidence"`
+ JSON struct {
+ Name respjson.Field
+ Options respjson.Field
+ MaxTags respjson.Field
+ MinConfidence respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u ExtensionUnion) AsRemoveBg() (v ExtensionRemoveBg) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
+}
+
+func (u ExtensionUnion) AsAutoTagging() (v ExtensionAutoTagging) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
+}
+
+func (u ExtensionUnion) AsAIAutoDescription() (v ExtensionAIAutoDescription) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
+}
+
+// Returns the unmodified JSON received from the API
+func (u ExtensionUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *ExtensionUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+type ExtensionRemoveBg struct {
+ // Specifies the background removal extension.
+ Name constant.RemoveBg `json:"name,required"`
+ Options ExtensionRemoveBgOptions `json:"options"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Name respjson.Field
+ Options respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r ExtensionRemoveBg) RawJSON() string { return r.JSON.raw }
+func (r *ExtensionRemoveBg) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+type ExtensionRemoveBgOptions struct {
+ // Whether to add an artificial shadow to the result. Default is false. Note:
+ // Adding shadows is currently only supported for car photos.
+ AddShadow bool `json:"add_shadow"`
+ // Specifies a solid color background using hex code (e.g., "81d4fa", "fff") or
+ // color name (e.g., "green"). If this parameter is set, `bg_image_url` must be
+ // empty.
+ BgColor string `json:"bg_color"`
+ // Sets a background image from a URL. If this parameter is set, `bg_color` must be
+ // empty.
+ BgImageURL string `json:"bg_image_url"`
+ // Allows semi-transparent regions in the result. Default is true. Note:
+ // Semitransparency is currently only supported for car windows.
+ Semitransparency bool `json:"semitransparency"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ AddShadow respjson.Field
+ BgColor respjson.Field
+ BgImageURL respjson.Field
+ Semitransparency respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r ExtensionRemoveBgOptions) RawJSON() string { return r.JSON.raw }
+func (r *ExtensionRemoveBgOptions) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+type ExtensionAutoTagging struct {
+ // Maximum number of tags to attach to the asset.
+ MaxTags int64 `json:"maxTags,required"`
+ // Minimum confidence level for tags to be considered valid.
+ MinConfidence int64 `json:"minConfidence,required"`
+ // Specifies the auto-tagging extension used.
+ //
+ // Any of "google-auto-tagging", "aws-auto-tagging".
+ Name string `json:"name,required"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ MaxTags respjson.Field
+ MinConfidence respjson.Field
+ Name respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r ExtensionAutoTagging) RawJSON() string { return r.JSON.raw }
+func (r *ExtensionAutoTagging) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+type ExtensionAIAutoDescription struct {
+ // Specifies the auto description extension.
+ Name constant.AIAutoDescription `json:"name,required"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Name respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
}
-func (r *BaseOverlayParam) UnmarshalJSON(data []byte) error {
+
+// Returns the unmodified JSON received from the API
+func (r ExtensionAIAutoDescription) RawJSON() string { return r.JSON.raw }
+func (r *ExtensionAIAutoDescription) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
@@ -196,7 +343,58 @@ func (r *ExtensionAIAutoDescriptionParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
-type ImageOverlayParam struct {
+// Options for generating responsive image attributes including `src`, `srcSet`,
+// and `sizes` for HTML `
` elements. This schema extends `SrcOptions` to add
+// support for responsive image generation with breakpoints.
+type GetImageAttributesOptions struct {
+ // Custom list of **device-width breakpoints** in pixels. These define common
+ // screen widths for responsive image generation.
+ //
+ // Defaults to `[640, 750, 828, 1080, 1200, 1920, 2048, 3840]`. Sorted
+ // automatically.
+ DeviceBreakpoints []float64 `json:"deviceBreakpoints"`
+ // Custom list of **image-specific breakpoints** in pixels. Useful for generating
+ // small variants (e.g., placeholders or thumbnails).
+ //
+ // Merged with `deviceBreakpoints` before calculating `srcSet`. Defaults to
+ // `[16, 32, 48, 64, 96, 128, 256, 384]`. Sorted automatically.
+ ImageBreakpoints []float64 `json:"imageBreakpoints"`
+ // The value for the HTML `sizes` attribute (e.g., `"100vw"` or
+ // `"(min-width:768px) 50vw, 100vw"`).
+ //
+ // - If it includes one or more `vw` units, breakpoints smaller than the
+ // corresponding percentage of the smallest device width are excluded.
+ // - If it contains no `vw` units, the full breakpoint list is used.
+ //
+ // Enables a width-based strategy and generates `w` descriptors in `srcSet`.
+ Sizes string `json:"sizes"`
+ // The intended display width of the image in pixels, used **only when the `sizes`
+ // attribute is not provided**.
+ //
+ // Triggers a DPR-based strategy (1x and 2x variants) and generates `x` descriptors
+ // in `srcSet`.
+ //
+ // Ignored if `sizes` is present.
+ Width float64 `json:"width"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ DeviceBreakpoints respjson.Field
+ ImageBreakpoints respjson.Field
+ Sizes respjson.Field
+ Width respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+ SrcOptions
+}
+
+// Returns the unmodified JSON received from the API
+func (r GetImageAttributesOptions) RawJSON() string { return r.JSON.raw }
+func (r *GetImageAttributesOptions) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+type ImageOverlay struct {
// Specifies the relative path to the image used as an overlay.
Input string `json:"input,required"`
Type constant.Image `json:"type,required"`
@@ -205,252 +403,206 @@ type ImageOverlayParam struct {
// format automatically. To always use base64 encoding (`ie-{base64}`), set this
// parameter to `base64`. To always use plain text (`i-{input}`), set it to
// `plain`.
- Encoding string `json:"encoding,omitzero"`
+ //
+ // Any of "auto", "plain", "base64".
+ Encoding string `json:"encoding"`
// Array of transformations to be applied to the overlay image. Supported
// transformations depends on the base/parent asset. See overlays on
// [Images](https://imagekit.io/docs/add-overlays-on-images#list-of-supported-image-transformations-in-image-layers)
// and
// [Videos](https://imagekit.io/docs/add-overlays-on-videos#list-of-transformations-supported-on-image-overlay).
- Transformation []TransformationParam `json:"transformation,omitzero"`
- BaseOverlayParam
-}
-
-func (r ImageOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow ImageOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
-
-func OverlayParamOfText(text string) OverlayUnionParam {
- var variant TextOverlayParam
- variant.Text = text
- return OverlayUnionParam{OfText: &variant}
-}
-
-func OverlayParamOfImage(input string) OverlayUnionParam {
- var image ImageOverlayParam
- image.Input = input
- return OverlayUnionParam{OfImage: &image}
-}
-
-func OverlayParamOfVideo(input string) OverlayUnionParam {
- var video VideoOverlayParam
- video.Input = input
- return OverlayUnionParam{OfVideo: &video}
-}
-
-func OverlayParamOfSubtitle(input string) OverlayUnionParam {
- var subtitle SubtitleOverlayParam
- subtitle.Input = input
- return OverlayUnionParam{OfSubtitle: &subtitle}
+ Transformation []Transformation `json:"transformation"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Input respjson.Field
+ Type respjson.Field
+ Encoding respjson.Field
+ Transformation respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+ BaseOverlay
+}
+
+// Returns the unmodified JSON received from the API
+func (r ImageOverlay) RawJSON() string { return r.JSON.raw }
+func (r *ImageOverlay) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-func OverlayParamOfSolidColor(color string) OverlayUnionParam {
- var solidColor SolidColorOverlayParam
- solidColor.Color = color
- return OverlayUnionParam{OfSolidColor: &solidColor}
-}
+func (ImageOverlay) ImplOverlayUnion() {}
-// Only one field can be non-zero.
+// OverlayUnion contains all possible properties and values from [TextOverlay],
+// [ImageOverlay], [VideoOverlay], [SubtitleOverlay], [SolidColorOverlay].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type OverlayUnionParam struct {
- OfText *TextOverlayParam `json:",omitzero,inline"`
- OfImage *ImageOverlayParam `json:",omitzero,inline"`
- OfVideo *VideoOverlayParam `json:",omitzero,inline"`
- OfSubtitle *SubtitleOverlayParam `json:",omitzero,inline"`
- OfSolidColor *SolidColorOverlayParam `json:",omitzero,inline"`
- paramUnion
-}
-
-func (u OverlayUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfText,
- u.OfImage,
- u.OfVideo,
- u.OfSubtitle,
- u.OfSolidColor)
-}
-func (u *OverlayUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
-}
-
-func (u *OverlayUnionParam) asAny() any {
- if !param.IsOmitted(u.OfText) {
- return u.OfText
- } else if !param.IsOmitted(u.OfImage) {
- return u.OfImage
- } else if !param.IsOmitted(u.OfVideo) {
- return u.OfVideo
- } else if !param.IsOmitted(u.OfSubtitle) {
- return u.OfSubtitle
- } else if !param.IsOmitted(u.OfSolidColor) {
- return u.OfSolidColor
- }
- return nil
-}
-
-// Returns a pointer to the underlying variant's property, if present.
-func (u OverlayUnionParam) GetText() *string {
- if vt := u.OfText; vt != nil {
- return &vt.Text
+// Use the [OverlayUnion.AsAny] method to switch on the variant.
+//
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+type OverlayUnion struct {
+ // This field is from variant [TextOverlay], [ImageOverlay], [VideoOverlay],
+ // [SubtitleOverlay], [SolidColorOverlay].
+ Position OverlayPosition `json:"position"`
+ // This field is from variant [TextOverlay], [ImageOverlay], [VideoOverlay],
+ // [SubtitleOverlay], [SolidColorOverlay].
+ Timing OverlayTiming `json:"timing"`
+ // This field is from variant [TextOverlay].
+ Text string `json:"text"`
+ // Any of "text", "image", "video", "subtitle", "solidColor".
+ Type string `json:"type"`
+ Encoding string `json:"encoding"`
+ // This field is a union of [[]TextOverlayTransformation], [[]Transformation],
+ // [[]Transformation], [[]SubtitleOverlayTransformation],
+ // [[]SolidColorOverlayTransformation]
+ Transformation OverlayUnionTransformation `json:"transformation"`
+ Input string `json:"input"`
+ // This field is from variant [SolidColorOverlay].
+ Color string `json:"color"`
+ JSON struct {
+ Position respjson.Field
+ Timing respjson.Field
+ Text respjson.Field
+ Type respjson.Field
+ Encoding respjson.Field
+ Transformation respjson.Field
+ Input respjson.Field
+ Color respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// anyOverlay is implemented by each variant of [OverlayUnion] to add type safety
+// for the return type of [OverlayUnion.AsAny]
+type anyOverlay interface {
+ ImplOverlayUnion()
+}
+
+// Use the following switch statement to find the correct variant
+//
+// switch variant := OverlayUnion.AsAny().(type) {
+// case shared.TextOverlay:
+// case shared.ImageOverlay:
+// case shared.VideoOverlay:
+// case shared.SubtitleOverlay:
+// case shared.SolidColorOverlay:
+// default:
+// fmt.Errorf("no variant present")
+// }
+func (u OverlayUnion) AsAny() anyOverlay {
+ switch u.Type {
+ case "text":
+ return u.AsText()
+ case "image":
+ return u.AsImage()
+ case "video":
+ return u.AsVideo()
+ case "subtitle":
+ return u.AsSubtitle()
+ case "solidColor":
+ return u.AsSolidColor()
}
return nil
}
-// Returns a pointer to the underlying variant's property, if present.
-func (u OverlayUnionParam) GetColor() *string {
- if vt := u.OfSolidColor; vt != nil {
- return &vt.Color
- }
- return nil
+func (u OverlayUnion) AsText() (v TextOverlay) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-// Returns a pointer to the underlying variant's property, if present.
-func (u OverlayUnionParam) GetType() *string {
- if vt := u.OfText; vt != nil {
- return (*string)(&vt.Type)
- } else if vt := u.OfImage; vt != nil {
- return (*string)(&vt.Type)
- } else if vt := u.OfVideo; vt != nil {
- return (*string)(&vt.Type)
- } else if vt := u.OfSubtitle; vt != nil {
- return (*string)(&vt.Type)
- } else if vt := u.OfSolidColor; vt != nil {
- return (*string)(&vt.Type)
- }
- return nil
+func (u OverlayUnion) AsImage() (v ImageOverlay) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-// Returns a pointer to the underlying variant's property, if present.
-func (u OverlayUnionParam) GetEncoding() *string {
- if vt := u.OfText; vt != nil {
- return (*string)(&vt.Encoding)
- } else if vt := u.OfImage; vt != nil {
- return (*string)(&vt.Encoding)
- } else if vt := u.OfVideo; vt != nil {
- return (*string)(&vt.Encoding)
- } else if vt := u.OfSubtitle; vt != nil {
- return (*string)(&vt.Encoding)
- }
- return nil
+func (u OverlayUnion) AsVideo() (v VideoOverlay) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-// Returns a pointer to the underlying variant's property, if present.
-func (u OverlayUnionParam) GetInput() *string {
- if vt := u.OfImage; vt != nil {
- return (*string)(&vt.Input)
- } else if vt := u.OfVideo; vt != nil {
- return (*string)(&vt.Input)
- } else if vt := u.OfSubtitle; vt != nil {
- return (*string)(&vt.Input)
- }
- return nil
+func (u OverlayUnion) AsSubtitle() (v SubtitleOverlay) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-// Returns a pointer to the underlying variant's Position property, if present.
-func (u OverlayUnionParam) GetPosition() *OverlayPositionParam {
- if vt := u.OfText; vt != nil {
- return &vt.Position
- } else if vt := u.OfImage; vt != nil {
- return &vt.Position
- } else if vt := u.OfVideo; vt != nil {
- return &vt.Position
- } else if vt := u.OfSubtitle; vt != nil {
- return &vt.Position
- } else if vt := u.OfSolidColor; vt != nil {
- return &vt.Position
- }
- return nil
+func (u OverlayUnion) AsSolidColor() (v SolidColorOverlay) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-// Returns a pointer to the underlying variant's Timing property, if present.
-func (u OverlayUnionParam) GetTiming() *OverlayTimingParam {
- if vt := u.OfText; vt != nil {
- return &vt.Timing
- } else if vt := u.OfImage; vt != nil {
- return &vt.Timing
- } else if vt := u.OfVideo; vt != nil {
- return &vt.Timing
- } else if vt := u.OfSubtitle; vt != nil {
- return &vt.Timing
- } else if vt := u.OfSolidColor; vt != nil {
- return &vt.Timing
- }
- return nil
-}
+// Returns the unmodified JSON received from the API
+func (u OverlayUnion) RawJSON() string { return u.JSON.raw }
-// Returns a subunion which exports methods to access subproperties
-//
-// Or use AsAny() to get the underlying value
-func (u OverlayUnionParam) GetTransformation() (res overlayUnionParamTransformation) {
- if vt := u.OfText; vt != nil {
- res.any = &vt.Transformation
- } else if vt := u.OfImage; vt != nil {
- res.any = &vt.Transformation
- } else if vt := u.OfVideo; vt != nil {
- res.any = &vt.Transformation
- } else if vt := u.OfSubtitle; vt != nil {
- res.any = &vt.Transformation
- } else if vt := u.OfSolidColor; vt != nil {
- res.any = &vt.Transformation
- }
- return
+func (r *OverlayUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Can have the runtime types [_[]TextOverlayTransformationParam],
-// [_[]TransformationParam], [_[]SubtitleOverlayTransformationParam],
-// [_[]SolidColorOverlayTransformationParam]
-type overlayUnionParamTransformation struct{ any }
-
-// Use the following switch statement to get the type of the union:
+// OverlayUnionTransformation is an implicit subunion of [OverlayUnion].
+// OverlayUnionTransformation provides convenient access to the sub-properties of
+// the union.
//
-// switch u.AsAny().(type) {
-// case *[]shared.TextOverlayTransformationParam:
-// case *[]shared.TransformationParam:
-// case *[]shared.SubtitleOverlayTransformationParam:
-// case *[]shared.SolidColorOverlayTransformationParam:
-// default:
-// fmt.Errorf("not present")
-// }
-func (u overlayUnionParamTransformation) AsAny() any { return u.any }
-
-func init() {
- apijson.RegisterUnion[OverlayUnionParam](
- "type",
- apijson.Discriminator[TextOverlayParam]("text"),
- apijson.Discriminator[ImageOverlayParam]("image"),
- apijson.Discriminator[VideoOverlayParam]("video"),
- apijson.Discriminator[SubtitleOverlayParam]("subtitle"),
- apijson.Discriminator[SolidColorOverlayParam]("solidColor"),
- )
+// For type safety it is recommended to directly use a variant of the
+// [OverlayUnion].
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfTextOverlayTransformationArray OfTransformationArray
+// OfSubtitleOverlayTransformationArray OfSolidColorOverlayTransformationArray]
+type OverlayUnionTransformation struct {
+ // This field will be present if the value is a [[]TextOverlayTransformation]
+ // instead of an object.
+ OfTextOverlayTransformationArray []TextOverlayTransformation `json:",inline"`
+ // This field will be present if the value is a [[]Transformation] instead of an
+ // object.
+ OfTransformationArray []Transformation `json:",inline"`
+ // This field will be present if the value is a [[]SubtitleOverlayTransformation]
+ // instead of an object.
+ OfSubtitleOverlayTransformationArray []SubtitleOverlayTransformation `json:",inline"`
+ // This field will be present if the value is a [[]SolidColorOverlayTransformation]
+ // instead of an object.
+ OfSolidColorOverlayTransformationArray []SolidColorOverlayTransformation `json:",inline"`
+ JSON struct {
+ OfTextOverlayTransformationArray respjson.Field
+ OfTransformationArray respjson.Field
+ OfSubtitleOverlayTransformationArray respjson.Field
+ OfSolidColorOverlayTransformationArray respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (r *OverlayUnionTransformation) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-type OverlayPositionParam struct {
+type OverlayPosition struct {
// Specifies the position of the overlay relative to the parent image or video.
// Maps to `lfo` in the URL.
//
// Any of "center", "top", "left", "bottom", "right", "top_left", "top_right",
// "bottom_left", "bottom_right".
- Focus OverlayPositionFocus `json:"focus,omitzero"`
+ Focus OverlayPositionFocus `json:"focus"`
// Specifies the x-coordinate of the top-left corner of the base asset where the
// overlay's top-left corner will be positioned. It also accepts arithmetic
// expressions such as `bw_mul_0.4` or `bw_sub_cw`. Maps to `lx` in the URL. Learn
// about
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
- X OverlayPositionXUnionParam `json:"x,omitzero"`
+ X OverlayPositionXUnion `json:"x"`
// Specifies the y-coordinate of the top-left corner of the base asset where the
// overlay's top-left corner will be positioned. It also accepts arithmetic
// expressions such as `bh_mul_0.4` or `bh_sub_ch`. Maps to `ly` in the URL. Learn
// about
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
- Y OverlayPositionYUnionParam `json:"y,omitzero"`
- paramObj
-}
-
-func (r OverlayPositionParam) MarshalJSON() (data []byte, err error) {
- type shadow OverlayPositionParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
-func (r *OverlayPositionParam) UnmarshalJSON(data []byte) error {
+ Y OverlayPositionYUnion `json:"y"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Focus respjson.Field
+ X respjson.Field
+ Y respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r OverlayPosition) RawJSON() string { return r.JSON.raw }
+func (r *OverlayPosition) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
@@ -470,160 +622,250 @@ const (
OverlayPositionFocusBottomRight OverlayPositionFocus = "bottom_right"
)
-// Only one field can be non-zero.
+// OverlayPositionXUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type OverlayPositionXUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type OverlayPositionXUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u OverlayPositionXUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u OverlayPositionXUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *OverlayPositionXUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u OverlayPositionXUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *OverlayPositionXUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u OverlayPositionXUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *OverlayPositionXUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// OverlayPositionYUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type OverlayPositionYUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type OverlayPositionYUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u OverlayPositionYUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u OverlayPositionYUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *OverlayPositionYUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u OverlayPositionYUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *OverlayPositionYUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u OverlayPositionYUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *OverlayPositionYUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-type OverlayTimingParam struct {
+type OverlayTiming struct {
// Specifies the duration (in seconds) during which the overlay should appear on
// the base video. Accepts a positive number up to two decimal places (e.g., `20`
// or `20.50`) and arithmetic expressions such as `bdu_mul_0.4` or `bdu_sub_idu`.
// Applies only if the base asset is a video. Maps to `ldu` in the URL.
- Duration OverlayTimingDurationUnionParam `json:"duration,omitzero"`
+ Duration OverlayTimingDurationUnion `json:"duration"`
// Specifies the end time (in seconds) for when the overlay should disappear from
// the base video. If both end and duration are provided, duration is ignored.
// Accepts a positive number up to two decimal places (e.g., `20` or `20.50`) and
// arithmetic expressions such as `bdu_mul_0.4` or `bdu_sub_idu`. Applies only if
// the base asset is a video. Maps to `leo` in the URL.
- End OverlayTimingEndUnionParam `json:"end,omitzero"`
+ End OverlayTimingEndUnion `json:"end"`
// Specifies the start time (in seconds) for when the overlay should appear on the
// base video. Accepts a positive number up to two decimal places (e.g., `20` or
// `20.50`) and arithmetic expressions such as `bdu_mul_0.4` or `bdu_sub_idu`.
// Applies only if the base asset is a video. Maps to `lso` in the URL.
- Start OverlayTimingStartUnionParam `json:"start,omitzero"`
- paramObj
-}
-
-func (r OverlayTimingParam) MarshalJSON() (data []byte, err error) {
- type shadow OverlayTimingParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
-func (r *OverlayTimingParam) UnmarshalJSON(data []byte) error {
+ Start OverlayTimingStartUnion `json:"start"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Duration respjson.Field
+ End respjson.Field
+ Start respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r OverlayTiming) RawJSON() string { return r.JSON.raw }
+func (r *OverlayTiming) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// OverlayTimingDurationUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type OverlayTimingDurationUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type OverlayTimingDurationUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u OverlayTimingDurationUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u OverlayTimingDurationUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *OverlayTimingDurationUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u OverlayTimingDurationUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *OverlayTimingDurationUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u OverlayTimingDurationUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *OverlayTimingDurationUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// OverlayTimingEndUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type OverlayTimingEndUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type OverlayTimingEndUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u OverlayTimingEndUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u OverlayTimingEndUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *OverlayTimingEndUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u OverlayTimingEndUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *OverlayTimingEndUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u OverlayTimingEndUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *OverlayTimingEndUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// OverlayTimingStartUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type OverlayTimingStartUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type OverlayTimingStartUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u OverlayTimingStartUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u OverlayTimingStartUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
+func (u OverlayTimingStartUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *OverlayTimingStartUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+
+// Returns the unmodified JSON received from the API
+func (u OverlayTimingStartUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *OverlayTimingStartUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-func (u *OverlayTimingStartUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Resulting set of attributes suitable for an HTML `
` element. Useful for
+// enabling responsive image loading with `srcSet` and `sizes`.
+type ResponsiveImageAttributes struct {
+ // URL for the _largest_ candidate (assigned to plain `src`).
+ Src string `json:"src,required" format:"uri"`
+ // `sizes` returned (or synthesised as `100vw`). The value for the HTML `sizes`
+ // attribute.
+ Sizes string `json:"sizes"`
+ // Candidate set with `w` or `x` descriptors. Multiple image URLs separated by
+ // commas, each with a descriptor.
+ SrcSet string `json:"srcSet"`
+ // Width as a number (if `width` was provided in the input options).
+ Width float64 `json:"width"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Src respjson.Field
+ Sizes respjson.Field
+ SrcSet respjson.Field
+ Width respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r ResponsiveImageAttributes) RawJSON() string { return r.JSON.raw }
+func (r *ResponsiveImageAttributes) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-type SolidColorOverlayParam struct {
+type SolidColorOverlay struct {
// Specifies the color of the block using an RGB hex code (e.g., `FF0000`), an RGBA
// code (e.g., `FFAABB50`), or a color name (e.g., `red`). If an 8-character value
// is provided, the last two characters represent the opacity level (from `00` for
@@ -635,74 +877,103 @@ type SolidColorOverlayParam struct {
// [Images](https://imagekit.io/docs/add-overlays-on-images#apply-transformation-on-solid-color-overlay)
// and
// [Videos](https://imagekit.io/docs/add-overlays-on-videos#apply-transformations-on-solid-color-block-overlay).
- Transformation []SolidColorOverlayTransformationParam `json:"transformation,omitzero"`
- BaseOverlayParam
+ Transformation []SolidColorOverlayTransformation `json:"transformation"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Color respjson.Field
+ Type respjson.Field
+ Transformation respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+ BaseOverlay
+}
+
+// Returns the unmodified JSON received from the API
+func (r SolidColorOverlay) RawJSON() string { return r.JSON.raw }
+func (r *SolidColorOverlay) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-func (r SolidColorOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow SolidColorOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
+func (SolidColorOverlay) ImplOverlayUnion() {}
-type SolidColorOverlayTransformationParam struct {
+type SolidColorOverlayTransformation struct {
// Specifies the transparency level of the solid color overlay. Accepts integers
// from `1` to `9`.
- Alpha param.Opt[float64] `json:"alpha,omitzero"`
+ Alpha float64 `json:"alpha"`
// Specifies the background color of the solid color overlay. Accepts an RGB hex
// code (e.g., `FF0000`), an RGBA code (e.g., `FFAABB50`), or a color name.
- Background param.Opt[string] `json:"background,omitzero"`
+ Background string `json:"background"`
// Creates a linear gradient with two colors. Pass `true` for a default gradient,
// or provide a string for a custom gradient. Only works if the base asset is an
// image. See
// [gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
- Gradient SolidColorOverlayTransformationGradientUnionParam `json:"gradient,omitzero"`
+ Gradient SolidColorOverlayTransformationGradientUnion `json:"gradient"`
// Controls the height of the solid color overlay. Accepts a numeric value or an
// arithmetic expression. Learn about
// [arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
- Height SolidColorOverlayTransformationHeightUnionParam `json:"height,omitzero"`
+ Height SolidColorOverlayTransformationHeightUnion `json:"height"`
// Specifies the corner radius of the solid color overlay. Set to `max` for
// circular or oval shape. See
// [radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
- Radius SolidColorOverlayTransformationRadiusUnionParam `json:"radius,omitzero"`
+ Radius SolidColorOverlayTransformationRadiusUnion `json:"radius"`
// Controls the width of the solid color overlay. Accepts a numeric value or an
// arithmetic expression (e.g., `bw_mul_0.2` or `bh_div_2`). Learn about
// [arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
- Width SolidColorOverlayTransformationWidthUnionParam `json:"width,omitzero"`
- paramObj
-}
-
-func (r SolidColorOverlayTransformationParam) MarshalJSON() (data []byte, err error) {
- type shadow SolidColorOverlayTransformationParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
-func (r *SolidColorOverlayTransformationParam) UnmarshalJSON(data []byte) error {
+ Width SolidColorOverlayTransformationWidthUnion `json:"width"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Alpha respjson.Field
+ Background respjson.Field
+ Gradient respjson.Field
+ Height respjson.Field
+ Radius respjson.Field
+ Width respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r SolidColorOverlayTransformation) RawJSON() string { return r.JSON.raw }
+func (r *SolidColorOverlayTransformation) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// SolidColorOverlayTransformationGradientUnion contains all possible properties
+// and values from [bool], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type SolidColorOverlayTransformationGradientUnionParam struct {
- // Construct this variant with constant.ValueOf[bool]()
- OfSolidColorOverlayTransformationGradientBoolean param.Opt[bool] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfSolidColorOverlayTransformationGradientBoolean OfString]
+type SolidColorOverlayTransformationGradientUnion struct {
+ // This field will be present if the value is a [bool] instead of an object.
+ OfSolidColorOverlayTransformationGradientBoolean bool `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfSolidColorOverlayTransformationGradientBoolean respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u SolidColorOverlayTransformationGradientUnion) AsSolidColorOverlayTransformationGradientBoolean() (v bool) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u SolidColorOverlayTransformationGradientUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfSolidColorOverlayTransformationGradientBoolean, u.OfString)
-}
-func (u *SolidColorOverlayTransformationGradientUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u SolidColorOverlayTransformationGradientUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *SolidColorOverlayTransformationGradientUnionParam) asAny() any {
- if !param.IsOmitted(u.OfSolidColorOverlayTransformationGradientBoolean) {
- return &u.OfSolidColorOverlayTransformationGradientBoolean
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u SolidColorOverlayTransformationGradientUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *SolidColorOverlayTransformationGradientUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
type SolidColorOverlayTransformationGradientBoolean bool
@@ -711,87 +982,118 @@ const (
SolidColorOverlayTransformationGradientBooleanTrue SolidColorOverlayTransformationGradientBoolean = true
)
-// Only one field can be non-zero.
+// SolidColorOverlayTransformationHeightUnion contains all possible properties and
+// values from [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type SolidColorOverlayTransformationHeightUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type SolidColorOverlayTransformationHeightUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u SolidColorOverlayTransformationHeightUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u SolidColorOverlayTransformationHeightUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *SolidColorOverlayTransformationHeightUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u SolidColorOverlayTransformationHeightUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *SolidColorOverlayTransformationHeightUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u SolidColorOverlayTransformationHeightUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *SolidColorOverlayTransformationHeightUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// SolidColorOverlayTransformationRadiusUnion contains all possible properties and
+// values from [float64], [constant.Max].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type SolidColorOverlayTransformationRadiusUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- // Construct this variant with constant.ValueOf[constant.Max]()
- OfMax constant.Max `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfMax]
+type SolidColorOverlayTransformationRadiusUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [constant.Max] instead of an
+ // object.
+ OfMax constant.Max `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfMax respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u SolidColorOverlayTransformationRadiusUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u SolidColorOverlayTransformationRadiusUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfMax)
-}
-func (u *SolidColorOverlayTransformationRadiusUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u SolidColorOverlayTransformationRadiusUnion) AsMax() (v constant.Max) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *SolidColorOverlayTransformationRadiusUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfMax) {
- return &u.OfMax
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u SolidColorOverlayTransformationRadiusUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *SolidColorOverlayTransformationRadiusUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// SolidColorOverlayTransformationWidthUnion contains all possible properties and
+// values from [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type SolidColorOverlayTransformationWidthUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type SolidColorOverlayTransformationWidthUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u SolidColorOverlayTransformationWidthUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u SolidColorOverlayTransformationWidthUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *SolidColorOverlayTransformationWidthUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u SolidColorOverlayTransformationWidthUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *SolidColorOverlayTransformationWidthUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u SolidColorOverlayTransformationWidthUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *SolidColorOverlayTransformationWidthUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
// Options for generating ImageKit URLs with transformations. See the
// [Transformations guide](https://imagekit.io/docs/transformations).
-//
-// The properties Src, URLEndpoint are required.
-type SrcOptionsParam struct {
+type SrcOptions struct {
// Accepts a relative or absolute path of the resource. If a relative path is
// provided, it is appended to the `urlEndpoint`. If an absolute path is provided,
// `urlEndpoint` is ignored.
@@ -809,37 +1111,46 @@ type SrcOptionsParam struct {
// and ImageKit will return a 401 Unauthorized status code.
//
// [Learn more](https://imagekit.io/docs/media-delivery-basic-security#how-to-generate-signed-urls).
- ExpiresIn param.Opt[float64] `json:"expiresIn,omitzero"`
+ ExpiresIn float64 `json:"expiresIn"`
+ // These are additional query parameters that you want to add to the final URL.
+ // They can be any query parameters and not necessarily related to ImageKit. This
+ // is especially useful if you want to add a versioning parameter to your URLs.
+ QueryParameters map[string]string `json:"queryParameters"`
// Whether to sign the URL or not. Set this to `true` if you want to generate a
// signed URL. If `signed` is `true` and `expiresIn` is not specified, the signed
// URL will not expire (valid indefinitely). Note: If `expiresIn` is set to any
// value above 0, the URL will always be signed regardless of this setting.
// [Learn more](https://imagekit.io/docs/media-delivery-basic-security#how-to-generate-signed-urls).
- Signed param.Opt[bool] `json:"signed,omitzero"`
- // These are additional query parameters that you want to add to the final URL.
- // They can be any query parameters and not necessarily related to ImageKit. This
- // is especially useful if you want to add a versioning parameter to your URLs.
- QueryParameters map[string]string `json:"queryParameters,omitzero"`
+ Signed bool `json:"signed"`
// An array of objects specifying the transformations to be applied in the URL. If
// more than one transformation is specified, they are applied in the order they
// are specified as chained transformations. See
// [Chained transformations](https://imagekit.io/docs/transformations#chained-transformations).
- Transformation []TransformationParam `json:"transformation,omitzero"`
+ Transformation []Transformation `json:"transformation"`
// By default, the transformation string is added as a query parameter in the URL,
// e.g., `?tr=w-100,h-100`. If you want to add the transformation string in the
// path of the URL, set this to `path`. Learn more in the
// [Transformations guide](https://imagekit.io/docs/transformations).
//
// Any of "path", "query".
- TransformationPosition TransformationPosition `json:"transformationPosition,omitzero"`
- paramObj
-}
-
-func (r SrcOptionsParam) MarshalJSON() (data []byte, err error) {
- type shadow SrcOptionsParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
-func (r *SrcOptionsParam) UnmarshalJSON(data []byte) error {
+ TransformationPosition TransformationPosition `json:"transformationPosition"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Src respjson.Field
+ URLEndpoint respjson.Field
+ ExpiresIn respjson.Field
+ QueryParameters respjson.Field
+ Signed respjson.Field
+ Transformation respjson.Field
+ TransformationPosition respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r SrcOptions) RawJSON() string { return r.JSON.raw }
+func (r *SrcOptions) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
@@ -857,7 +1168,7 @@ const (
StreamingResolution2160 StreamingResolution = "2160"
)
-type SubtitleOverlayParam struct {
+type SubtitleOverlay struct {
// Specifies the relative path to the subtitle file used as an overlay.
Input string `json:"input,required"`
Type constant.Subtitle `json:"type,required"`
@@ -866,35 +1177,49 @@ type SubtitleOverlayParam struct {
// format automatically. To always use base64 encoding (`ie-{base64}`), set this
// parameter to `base64`. To always use plain text (`i-{input}`), set it to
// `plain`.
- Encoding string `json:"encoding,omitzero"`
+ //
+ // Any of "auto", "plain", "base64".
+ Encoding string `json:"encoding"`
// Control styling of the subtitle. See
// [Styling subtitles](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer).
- Transformation []SubtitleOverlayTransformationParam `json:"transformation,omitzero"`
- BaseOverlayParam
+ Transformation []SubtitleOverlayTransformation `json:"transformation"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Input respjson.Field
+ Type respjson.Field
+ Encoding respjson.Field
+ Transformation respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+ BaseOverlay
+}
+
+// Returns the unmodified JSON received from the API
+func (r SubtitleOverlay) RawJSON() string { return r.JSON.raw }
+func (r *SubtitleOverlay) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-func (r SubtitleOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow SubtitleOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
+func (SubtitleOverlay) ImplOverlayUnion() {}
// Subtitle styling options.
// [Learn more](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
// from the docs.
-type SubtitleOverlayTransformationParam struct {
+type SubtitleOverlayTransformation struct {
// Specifies the subtitle background color using a standard color name, an RGB
// color code (e.g., FF0000), or an RGBA color code (e.g., FFAABB50).
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- Background param.Opt[string] `json:"background,omitzero"`
+ Background string `json:"background"`
// Sets the font color of the subtitle text using a standard color name, an RGB
// color code (e.g., FF0000), or an RGBA color code (e.g., FFAABB50).
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- Color param.Opt[string] `json:"color,omitzero"`
+ Color string `json:"color"`
// Font family for subtitles. Refer to the
// [supported fonts](https://imagekit.io/docs/add-overlays-on-images#supported-text-font-list).
- FontFamily param.Opt[string] `json:"fontFamily,omitzero"`
+ FontFamily string `json:"fontFamily"`
// Sets the font outline of the subtitle text. Requires the outline width (an
// integer) and the outline color (as an RGB color code, RGBA color code, or
// standard web color name) separated by an underscore. Example: `fol-2_blue`
@@ -903,7 +1228,7 @@ type SubtitleOverlayTransformationParam struct {
// outline color `#A1CCDD` at 50% opacity).
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- FontOutline param.Opt[string] `json:"fontOutline,omitzero"`
+ FontOutline string `json:"fontOutline"`
// Sets the font shadow for the subtitle text. Requires the shadow color (as an RGB
// color code, RGBA color code, or standard web color name) and shadow indent (an
// integer) separated by an underscore. Example: `fsh-blue_2` (shadow color blue,
@@ -911,26 +1236,35 @@ type SubtitleOverlayTransformationParam struct {
// `fsh-A1CCDD50_3` (shadow color `#A1CCDD` at 50% opacity, indent of 3px).
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- FontShadow param.Opt[string] `json:"fontShadow,omitzero"`
+ FontShadow string `json:"fontShadow"`
// Sets the font size of subtitle text.
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- FontSize param.Opt[float64] `json:"fontSize,omitzero"`
+ FontSize float64 `json:"fontSize"`
// Sets the typography style of the subtitle text. Supports values are `b` for
// bold, `i` for italics, and `b_i` for bold with italics.
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
//
// Any of "b", "i", "b_i".
- Typography SubtitleOverlayTransformationTypography `json:"typography,omitzero"`
- paramObj
-}
-
-func (r SubtitleOverlayTransformationParam) MarshalJSON() (data []byte, err error) {
- type shadow SubtitleOverlayTransformationParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
-func (r *SubtitleOverlayTransformationParam) UnmarshalJSON(data []byte) error {
+ Typography SubtitleOverlayTransformationTypography `json:"typography"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Background respjson.Field
+ Color respjson.Field
+ FontFamily respjson.Field
+ FontOutline respjson.Field
+ FontShadow respjson.Field
+ FontSize respjson.Field
+ Typography respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r SubtitleOverlayTransformation) RawJSON() string { return r.JSON.raw }
+func (r *SubtitleOverlayTransformation) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
@@ -946,7 +1280,7 @@ const (
SubtitleOverlayTransformationTypographyBI SubtitleOverlayTransformationTypography = "b_i"
)
-type TextOverlayParam struct {
+type TextOverlay struct {
// Specifies the text to be displayed in the overlay. The SDK automatically handles
// special characters and encoding.
Text string `json:"text,required"`
@@ -956,80 +1290,109 @@ type TextOverlayParam struct {
// appropriate format based on the input text. To always use base64
// (`ie-{base64}`), set this parameter to `base64`. To always use plain text
// (`i-{input}`), set it to `plain`.
- Encoding string `json:"encoding,omitzero"`
+ //
+ // Any of "auto", "plain", "base64".
+ Encoding string `json:"encoding"`
// Control styling of the text overlay. See
// [Text overlays](https://imagekit.io/docs/add-overlays-on-images#text-overlay).
- Transformation []TextOverlayTransformationParam `json:"transformation,omitzero"`
- BaseOverlayParam
+ Transformation []TextOverlayTransformation `json:"transformation"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Text respjson.Field
+ Type respjson.Field
+ Encoding respjson.Field
+ Transformation respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+ BaseOverlay
+}
+
+// Returns the unmodified JSON received from the API
+func (r TextOverlay) RawJSON() string { return r.JSON.raw }
+func (r *TextOverlay) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-func (r TextOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow TextOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
+func (TextOverlay) ImplOverlayUnion() {}
-type TextOverlayTransformationParam struct {
+type TextOverlayTransformation struct {
// Specifies the transparency level of the text overlay. Accepts integers from `1`
// to `9`.
- Alpha param.Opt[float64] `json:"alpha,omitzero"`
+ Alpha float64 `json:"alpha"`
// Specifies the background color of the text overlay. Accepts an RGB hex code, an
// RGBA code, or a color name.
- Background param.Opt[string] `json:"background,omitzero"`
+ Background string `json:"background"`
+ // Flip the text overlay horizontally, vertically, or both.
+ //
+ // Any of "h", "v", "h_v", "v_h".
+ Flip TextOverlayTransformationFlip `json:"flip"`
// Specifies the font color of the overlaid text. Accepts an RGB hex code (e.g.,
// `FF0000`), an RGBA code (e.g., `FFAABB50`), or a color name.
- FontColor param.Opt[string] `json:"fontColor,omitzero"`
+ FontColor string `json:"fontColor"`
// Specifies the font family of the overlaid text. Choose from the supported fonts
// list or use a custom font. See
// [Supported fonts](https://imagekit.io/docs/add-overlays-on-images#supported-text-font-list)
// and
// [Custom font](https://imagekit.io/docs/add-overlays-on-images#change-font-family-in-text-overlay).
- FontFamily param.Opt[string] `json:"fontFamily,omitzero"`
- // Specifies the typography style of the text. Supported values:
- //
- // - Single styles: `b` (bold), `i` (italic), `strikethrough`.
- // - Combinations: Any combination separated by underscores, e.g., `b_i`,
- // `b_i_strikethrough`.
- Typography param.Opt[string] `json:"typography,omitzero"`
- // Flip the text overlay horizontally, vertically, or both.
- //
- // Any of "h", "v", "h_v", "v_h".
- Flip TextOverlayTransformationFlip `json:"flip,omitzero"`
+ FontFamily string `json:"fontFamily"`
// Specifies the font size of the overlaid text. Accepts a numeric value or an
// arithmetic expression.
- FontSize TextOverlayTransformationFontSizeUnionParam `json:"fontSize,omitzero"`
+ FontSize TextOverlayTransformationFontSizeUnion `json:"fontSize"`
// Specifies the inner alignment of the text when width is more than the text
// length.
//
// Any of "left", "right", "center".
- InnerAlignment TextOverlayTransformationInnerAlignment `json:"innerAlignment,omitzero"`
+ InnerAlignment TextOverlayTransformationInnerAlignment `json:"innerAlignment"`
// Specifies the line height of the text overlay. Accepts integer values
// representing line height in points. It can also accept
// [arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations)
// such as `bw_mul_0.2`, or `bh_div_20`.
- LineHeight TextOverlayTransformationLineHeightUnionParam `json:"lineHeight,omitzero"`
+ LineHeight TextOverlayTransformationLineHeightUnion `json:"lineHeight"`
// Specifies the padding around the overlaid text. Can be provided as a single
// positive integer or multiple values separated by underscores (following CSS
// shorthand order). Arithmetic expressions are also accepted.
- Padding TextOverlayTransformationPaddingUnionParam `json:"padding,omitzero"`
+ Padding TextOverlayTransformationPaddingUnion `json:"padding"`
// Specifies the corner radius of the text overlay. Set to `max` to achieve a
// circular or oval shape.
- Radius TextOverlayTransformationRadiusUnionParam `json:"radius,omitzero"`
+ Radius TextOverlayTransformationRadiusUnion `json:"radius"`
// Specifies the rotation angle of the text overlay. Accepts a numeric value for
// clockwise rotation or a string prefixed with "N" for counter-clockwise rotation.
- Rotation TextOverlayTransformationRotationUnionParam `json:"rotation,omitzero"`
+ Rotation TextOverlayTransformationRotationUnion `json:"rotation"`
+ // Specifies the typography style of the text. Supported values:
+ //
+ // - Single styles: `b` (bold), `i` (italic), `strikethrough`.
+ // - Combinations: Any combination separated by underscores, e.g., `b_i`,
+ // `b_i_strikethrough`.
+ Typography string `json:"typography"`
// Specifies the maximum width (in pixels) of the overlaid text. The text wraps
// automatically, and arithmetic expressions (e.g., `bw_mul_0.2` or `bh_div_2`) are
// supported. Useful when used in conjunction with the `background`. Learn about
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
- Width TextOverlayTransformationWidthUnionParam `json:"width,omitzero"`
- paramObj
-}
-
-func (r TextOverlayTransformationParam) MarshalJSON() (data []byte, err error) {
- type shadow TextOverlayTransformationParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
-func (r *TextOverlayTransformationParam) UnmarshalJSON(data []byte) error {
+ Width TextOverlayTransformationWidthUnion `json:"width"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Alpha respjson.Field
+ Background respjson.Field
+ Flip respjson.Field
+ FontColor respjson.Field
+ FontFamily respjson.Field
+ FontSize respjson.Field
+ InnerAlignment respjson.Field
+ LineHeight respjson.Field
+ Padding respjson.Field
+ Radius respjson.Field
+ Rotation respjson.Field
+ Typography respjson.Field
+ Width respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r TextOverlayTransformation) RawJSON() string { return r.JSON.raw }
+func (r *TextOverlayTransformation) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
@@ -1043,29 +1406,40 @@ const (
TextOverlayTransformationFlipVH TextOverlayTransformationFlip = "v_h"
)
-// Only one field can be non-zero.
+// TextOverlayTransformationFontSizeUnion contains all possible properties and
+// values from [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TextOverlayTransformationFontSizeUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TextOverlayTransformationFontSizeUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TextOverlayTransformationFontSizeUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TextOverlayTransformationFontSizeUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TextOverlayTransformationFontSizeUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TextOverlayTransformationFontSizeUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TextOverlayTransformationFontSizeUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TextOverlayTransformationFontSizeUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TextOverlayTransformationFontSizeUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
// Specifies the inner alignment of the text when width is more than the text
@@ -1078,130 +1452,185 @@ const (
TextOverlayTransformationInnerAlignmentCenter TextOverlayTransformationInnerAlignment = "center"
)
-// Only one field can be non-zero.
+// TextOverlayTransformationLineHeightUnion contains all possible properties and
+// values from [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TextOverlayTransformationLineHeightUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TextOverlayTransformationLineHeightUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TextOverlayTransformationLineHeightUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TextOverlayTransformationLineHeightUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TextOverlayTransformationLineHeightUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TextOverlayTransformationLineHeightUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TextOverlayTransformationLineHeightUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TextOverlayTransformationLineHeightUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TextOverlayTransformationLineHeightUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TextOverlayTransformationPaddingUnion contains all possible properties and
+// values from [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TextOverlayTransformationPaddingUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TextOverlayTransformationPaddingUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TextOverlayTransformationPaddingUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TextOverlayTransformationPaddingUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TextOverlayTransformationPaddingUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TextOverlayTransformationPaddingUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TextOverlayTransformationPaddingUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TextOverlayTransformationPaddingUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TextOverlayTransformationPaddingUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TextOverlayTransformationRadiusUnion contains all possible properties and values
+// from [float64], [constant.Max].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TextOverlayTransformationRadiusUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- // Construct this variant with constant.ValueOf[constant.Max]()
- OfMax constant.Max `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfMax]
+type TextOverlayTransformationRadiusUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [constant.Max] instead of an
+ // object.
+ OfMax constant.Max `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfMax respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TextOverlayTransformationRadiusUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TextOverlayTransformationRadiusUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfMax)
-}
-func (u *TextOverlayTransformationRadiusUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TextOverlayTransformationRadiusUnion) AsMax() (v constant.Max) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TextOverlayTransformationRadiusUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfMax) {
- return &u.OfMax
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TextOverlayTransformationRadiusUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TextOverlayTransformationRadiusUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TextOverlayTransformationRotationUnion contains all possible properties and
+// values from [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TextOverlayTransformationRotationUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TextOverlayTransformationRotationUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TextOverlayTransformationRotationUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TextOverlayTransformationRotationUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TextOverlayTransformationRotationUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TextOverlayTransformationRotationUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TextOverlayTransformationRotationUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TextOverlayTransformationRotationUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TextOverlayTransformationRotationUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TextOverlayTransformationWidthUnion contains all possible properties and values
+// from [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TextOverlayTransformationWidthUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TextOverlayTransformationWidthUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TextOverlayTransformationWidthUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TextOverlayTransformationWidthUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TextOverlayTransformationWidthUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TextOverlayTransformationWidthUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TextOverlayTransformationWidthUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TextOverlayTransformationWidthUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TextOverlayTransformationWidthUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
// The SDK provides easy-to-use names for transformations. These names are
@@ -1210,125 +1639,48 @@ func (u *TextOverlayTransformationWidthUnionParam) asAny() any {
// use a transformation that is not supported by the SDK, You can use the `raw`
// parameter to pass the transformation string directly. See the
// [Transformations documentation](https://imagekit.io/docs/transformations).
-type TransformationParam struct {
+type Transformation struct {
// Uses AI to change the background. Provide a text prompt or a base64-encoded
// prompt, e.g., `prompt-snow road` or `prompte-[urlencoded_base64_encoded_text]`.
// Not supported inside overlay. See
// [AI Change Background](https://imagekit.io/docs/ai-transformations#change-background-e-changebg).
- AIChangeBackground param.Opt[string] `json:"aiChangeBackground,omitzero"`
- // Uses AI to edit images based on a text prompt. Provide a text prompt or a
- // base64-encoded prompt, e.g., `prompt-snow road` or
- // `prompte-[urlencoded_base64_encoded_text]`. Not supported inside overlay.
- // See [AI Edit](https://imagekit.io/docs/ai-transformations#edit-image-e-edit).
- AIEdit param.Opt[string] `json:"aiEdit,omitzero"`
- // Specifies the background to be used in conjunction with certain cropping
- // strategies when resizing an image.
- //
- // - A solid color: e.g., `red`, `F3F3F3`, `AAFF0010`. See
- // [Solid color background](https://imagekit.io/docs/effects-and-enhancements#solid-color-background).
- // - A blurred background: e.g., `blurred`, `blurred_25_N15`, etc. See
- // [Blurred background](https://imagekit.io/docs/effects-and-enhancements#blurred-background).
- // - Expand the image boundaries using generative fill: `genfill`. Not supported
- // inside overlay. Optionally, control the background scene by passing a text
- // prompt: `genfill[:-prompt-${text}]` or
- // `genfill[:-prompte-${urlencoded_base64_encoded_text}]`. See
- // [Generative fill background](https://imagekit.io/docs/ai-transformations#generative-fill-bg-genfill).
- Background param.Opt[string] `json:"background,omitzero"`
- // Specifies the Gaussian blur level. Accepts an integer value between 1 and 100,
- // or an expression like `bl-10`. See
- // [Blur](https://imagekit.io/docs/effects-and-enhancements#blur---bl).
- Blur param.Opt[float64] `json:"blur,omitzero"`
- // Adds a border to the output media. Accepts a string in the format
- // `_` (e.g., `5_FFF000` for a 5px yellow border), or an
- // expression like `ih_div_20_FF00FF`. See
- // [Border](https://imagekit.io/docs/effects-and-enhancements#border---b).
- Border param.Opt[string] `json:"border,omitzero"`
- // Indicates whether the output image should retain the original color profile. See
- // [Color profile](https://imagekit.io/docs/image-optimization#color-profile---cp).
- ColorProfile param.Opt[bool] `json:"colorProfile,omitzero"`
- // Specifies a fallback image if the resource is not found, e.g., a URL or file
- // path. See
- // [Default image](https://imagekit.io/docs/image-transformation#default-image---di).
- DefaultImage param.Opt[string] `json:"defaultImage,omitzero"`
- // Accepts values between 0.1 and 5, or `auto` for automatic device pixel ratio
- // (DPR) calculation. See
- // [DPR](https://imagekit.io/docs/image-resize-and-crop#dpr---dpr).
- Dpr param.Opt[float64] `json:"dpr,omitzero"`
- // Refines padding and cropping behavior for pad resize, maintain ratio, and
- // extract crop modes. Supports manual positions and coordinate-based focus. With
- // AI-based cropping, you can automatically keep key subjects in frame—such as
- // faces or detected objects (e.g., `fo-face`, `fo-person`, `fo-car`)— while
- // resizing.
- //
- // - See [Focus](https://imagekit.io/docs/image-resize-and-crop#focus---fo).
- // - [Object aware cropping](https://imagekit.io/docs/image-resize-and-crop#object-aware-cropping---fo-object-name)
- Focus param.Opt[string] `json:"focus,omitzero"`
- // Specifies whether the output image (in JPEG or PNG) should be compressed
- // losslessly. See
- // [Lossless compression](https://imagekit.io/docs/image-optimization#lossless-webp-and-png---lo).
- Lossless param.Opt[bool] `json:"lossless,omitzero"`
- // By default, ImageKit removes all metadata during automatic image compression.
- // Set this to true to preserve metadata. See
- // [Image metadata](https://imagekit.io/docs/image-optimization#image-metadata---md).
- Metadata param.Opt[bool] `json:"metadata,omitzero"`
- // Named transformation reference. See
- // [Named transformations](https://imagekit.io/docs/transformations#named-transformations).
- Named param.Opt[string] `json:"named,omitzero"`
- // Specifies the opacity level of the output image. See
- // [Opacity](https://imagekit.io/docs/effects-and-enhancements#opacity---o).
- Opacity param.Opt[float64] `json:"opacity,omitzero"`
- // If set to true, serves the original file without applying any transformations.
- // See
- // [Deliver original file as-is](https://imagekit.io/docs/core-delivery-features#deliver-original-file-as-is---orig-true).
- Original param.Opt[bool] `json:"original,omitzero"`
- // Specifies whether the output JPEG image should be rendered progressively.
- // Progressive loading begins with a low-quality, pixelated version of the full
- // image, which gradually improves to provide a faster perceived load time. See
- // [Progressive images](https://imagekit.io/docs/image-optimization#progressive-image---pr).
- Progressive param.Opt[bool] `json:"progressive,omitzero"`
- // Specifies the quality of the output image for lossy formats such as JPEG, WebP,
- // and AVIF. A higher quality value results in a larger file size with better
- // quality, while a lower value produces a smaller file size with reduced quality.
- // See [Quality](https://imagekit.io/docs/image-optimization#quality---q).
- Quality param.Opt[float64] `json:"quality,omitzero"`
- // Pass any transformation not directly supported by the SDK. This transformation
- // string is appended to the URL as provided.
- Raw param.Opt[string] `json:"raw,omitzero"`
- // Accepts a numeric value that determines how much to zoom in or out of the
- // cropped area. It should be used in conjunction with fo-face or fo-.
- // See [Zoom](https://imagekit.io/docs/image-resize-and-crop#zoom---z).
- Zoom param.Opt[float64] `json:"zoom,omitzero"`
+ AIChangeBackground string `json:"aiChangeBackground"`
// Adds an AI-based drop shadow around a foreground object on a transparent or
// removed background. Optionally, control the direction, elevation, and saturation
// of the light source (e.g., `az-45` to change light direction). Pass `true` for
// the default drop shadow, or provide a string for a custom drop shadow. Supported
// inside overlay. See
// [AI Drop Shadow](https://imagekit.io/docs/ai-transformations#ai-drop-shadow-e-dropshadow).
- AIDropShadow TransformationAIDropShadowUnionParam `json:"aiDropShadow,omitzero"`
+ AIDropShadow TransformationAIDropShadowUnion `json:"aiDropShadow"`
+ // Uses AI to edit images based on a text prompt. Provide a text prompt or a
+ // base64-encoded prompt, e.g., `prompt-snow road` or
+ // `prompte-[urlencoded_base64_encoded_text]`. Not supported inside overlay.
+ // See [AI Edit](https://imagekit.io/docs/ai-transformations#edit-image-e-edit).
+ AIEdit string `json:"aiEdit"`
// Applies ImageKit's in-house background removal. Supported inside overlay. See
// [AI Background Removal](https://imagekit.io/docs/ai-transformations#imagekit-background-removal-e-bgremove).
//
// Any of true.
- AIRemoveBackground bool `json:"aiRemoveBackground,omitzero"`
+ AIRemoveBackground bool `json:"aiRemoveBackground"`
// Uses third-party background removal. Note: It is recommended to use
// aiRemoveBackground, ImageKit's in-house solution, which is more cost-effective.
// Supported inside overlay. See
// [External Background Removal](https://imagekit.io/docs/ai-transformations#background-removal-e-removedotbg).
//
// Any of true.
- AIRemoveBackgroundExternal bool `json:"aiRemoveBackgroundExternal,omitzero"`
+ AIRemoveBackgroundExternal bool `json:"aiRemoveBackgroundExternal"`
// Performs AI-based retouching to improve faces or product shots. Not supported
// inside overlay. See
// [AI Retouch](https://imagekit.io/docs/ai-transformations#retouch-e-retouch).
//
// Any of true.
- AIRetouch bool `json:"aiRetouch,omitzero"`
+ AIRetouch bool `json:"aiRetouch"`
// Upscales images beyond their original dimensions using AI. Not supported inside
// overlay. See
// [AI Upscale](https://imagekit.io/docs/ai-transformations#upscale-e-upscale).
//
// Any of true.
- AIUpscale bool `json:"aiUpscale,omitzero"`
+ AIUpscale bool `json:"aiUpscale"`
// Generates a variation of an image using AI. This produces a new image with
// slight variations from the original, such as changes in color, texture, and
// other visual elements, while preserving the structure and essence of the
@@ -1336,48 +1688,90 @@ type TransformationParam struct {
// [AI Generate Variations](https://imagekit.io/docs/ai-transformations#generate-variations-of-an-image-e-genvar).
//
// Any of true.
- AIVariation bool `json:"aiVariation,omitzero"`
+ AIVariation bool `json:"aiVariation"`
// Specifies the aspect ratio for the output, e.g., "ar-4-3". Typically used with
// either width or height (but not both). For example: aspectRatio = `4:3`, `4_3`,
// or an expression like `iar_div_2`. See
// [Image resize and crop – Aspect ratio](https://imagekit.io/docs/image-resize-and-crop#aspect-ratio---ar).
- AspectRatio TransformationAspectRatioUnionParam `json:"aspectRatio,omitzero"`
+ AspectRatio TransformationAspectRatioUnion `json:"aspectRatio"`
// Specifies the audio codec, e.g., `aac`, `opus`, or `none`. See
// [Audio codec](https://imagekit.io/docs/video-optimization#audio-codec---ac).
//
// Any of "aac", "opus", "none".
- AudioCodec TransformationAudioCodec `json:"audioCodec,omitzero"`
+ AudioCodec TransformationAudioCodec `json:"audioCodec"`
+ // Specifies the background to be used in conjunction with certain cropping
+ // strategies when resizing an image.
+ //
+ // - A solid color: e.g., `red`, `F3F3F3`, `AAFF0010`. See
+ // [Solid color background](https://imagekit.io/docs/effects-and-enhancements#solid-color-background).
+ // - A blurred background: e.g., `blurred`, `blurred_25_N15`, etc. See
+ // [Blurred background](https://imagekit.io/docs/effects-and-enhancements#blurred-background).
+ // - Expand the image boundaries using generative fill: `genfill`. Not supported
+ // inside overlay. Optionally, control the background scene by passing a text
+ // prompt: `genfill[:-prompt-${text}]` or
+ // `genfill[:-prompte-${urlencoded_base64_encoded_text}]`. See
+ // [Generative fill background](https://imagekit.io/docs/ai-transformations#generative-fill-bg-genfill).
+ Background string `json:"background"`
+ // Specifies the Gaussian blur level. Accepts an integer value between 1 and 100,
+ // or an expression like `bl-10`. See
+ // [Blur](https://imagekit.io/docs/effects-and-enhancements#blur---bl).
+ Blur float64 `json:"blur"`
+ // Adds a border to the output media. Accepts a string in the format
+ // `_` (e.g., `5_FFF000` for a 5px yellow border), or an
+ // expression like `ih_div_20_FF00FF`. See
+ // [Border](https://imagekit.io/docs/effects-and-enhancements#border---b).
+ Border string `json:"border"`
+ // Indicates whether the output image should retain the original color profile. See
+ // [Color profile](https://imagekit.io/docs/image-optimization#color-profile---cp).
+ ColorProfile bool `json:"colorProfile"`
// Automatically enhances the contrast of an image (contrast stretch). See
// [Contrast Stretch](https://imagekit.io/docs/effects-and-enhancements#contrast-stretch---e-contrast).
//
// Any of true.
- ContrastStretch bool `json:"contrastStretch,omitzero"`
+ ContrastStretch bool `json:"contrastStretch"`
// Crop modes for image resizing. See
// [Crop modes & focus](https://imagekit.io/docs/image-resize-and-crop#crop-crop-modes--focus).
//
// Any of "force", "at_max", "at_max_enlarge", "at_least", "maintain_ratio".
- Crop TransformationCrop `json:"crop,omitzero"`
+ Crop TransformationCrop `json:"crop"`
// Additional crop modes for image resizing. See
// [Crop modes & focus](https://imagekit.io/docs/image-resize-and-crop#crop-crop-modes--focus).
//
// Any of "pad_resize", "extract", "pad_extract".
- CropMode TransformationCropMode `json:"cropMode,omitzero"`
+ CropMode TransformationCropMode `json:"cropMode"`
+ // Specifies a fallback image if the resource is not found, e.g., a URL or file
+ // path. See
+ // [Default image](https://imagekit.io/docs/image-transformation#default-image---di).
+ DefaultImage string `json:"defaultImage"`
+ // Accepts values between 0.1 and 5, or `auto` for automatic device pixel ratio
+ // (DPR) calculation. See
+ // [DPR](https://imagekit.io/docs/image-resize-and-crop#dpr---dpr).
+ Dpr float64 `json:"dpr"`
// Specifies the duration (in seconds) for trimming videos, e.g., `5` or `10.5`.
// Typically used with startOffset to indicate the length from the start offset.
// Arithmetic expressions are supported. See
// [Trim videos – Duration](https://imagekit.io/docs/trim-videos#duration---du).
- Duration TransformationDurationUnionParam `json:"duration,omitzero"`
+ Duration TransformationDurationUnion `json:"duration"`
// Specifies the end offset (in seconds) for trimming videos, e.g., `5` or `10.5`.
// Typically used with startOffset to define a time window. Arithmetic expressions
// are supported. See
// [Trim videos – End offset](https://imagekit.io/docs/trim-videos#end-offset---eo).
- EndOffset TransformationEndOffsetUnionParam `json:"endOffset,omitzero"`
+ EndOffset TransformationEndOffsetUnion `json:"endOffset"`
// Flips or mirrors an image either horizontally, vertically, or both. Acceptable
// values: `h` (horizontal), `v` (vertical), `h_v` (horizontal and vertical), or
// `v_h`. See [Flip](https://imagekit.io/docs/effects-and-enhancements#flip---fl).
//
// Any of "h", "v", "h_v", "v_h".
- Flip TransformationFlip `json:"flip,omitzero"`
+ Flip TransformationFlip `json:"flip"`
+ // Refines padding and cropping behavior for pad resize, maintain ratio, and
+ // extract crop modes. Supports manual positions and coordinate-based focus. With
+ // AI-based cropping, you can automatically keep key subjects in frame—such as
+ // faces or detected objects (e.g., `fo-face`, `fo-person`, `fo-car`)— while
+ // resizing.
+ //
+ // - See [Focus](https://imagekit.io/docs/image-resize-and-crop#focus---fo).
+ // - [Object aware cropping](https://imagekit.io/docs/image-resize-and-crop#object-aware-cropping---fo-object-name)
+ Focus string `json:"focus"`
// Specifies the output format for images or videos, e.g., `jpg`, `png`, `webp`,
// `mp4`, or `auto`. You can also pass `orig` for images to return the original
// format. ImageKit automatically delivers images and videos in the optimal format
@@ -1388,151 +1782,226 @@ type TransformationParam struct {
//
// Any of "auto", "webp", "jpg", "jpeg", "png", "gif", "svg", "mp4", "webm",
// "avif", "orig".
- Format TransformationFormat `json:"format,omitzero"`
+ Format TransformationFormat `json:"format"`
// Creates a linear gradient with two colors. Pass `true` for a default gradient,
// or provide a string for a custom gradient. See
// [Gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
- Gradient TransformationGradientUnionParam `json:"gradient,omitzero"`
+ Gradient TransformationGradientUnion `json:"gradient"`
// Enables a grayscale effect for images. See
// [Grayscale](https://imagekit.io/docs/effects-and-enhancements#grayscale---e-grayscale).
//
// Any of true.
- Grayscale bool `json:"grayscale,omitzero"`
+ Grayscale bool `json:"grayscale"`
// Specifies the height of the output. If a value between 0 and 1 is provided, it
// is treated as a percentage (e.g., `0.5` represents 50% of the original height).
// You can also supply arithmetic expressions (e.g., `ih_mul_0.5`). Height
// transformation –
// [Images](https://imagekit.io/docs/image-resize-and-crop#height---h) ·
// [Videos](https://imagekit.io/docs/video-resize-and-crop#height---h)
- Height TransformationHeightUnionParam `json:"height,omitzero"`
+ Height TransformationHeightUnion `json:"height"`
+ // Specifies whether the output image (in JPEG or PNG) should be compressed
+ // losslessly. See
+ // [Lossless compression](https://imagekit.io/docs/image-optimization#lossless-webp-and-png---lo).
+ Lossless bool `json:"lossless"`
+ // By default, ImageKit removes all metadata during automatic image compression.
+ // Set this to true to preserve metadata. See
+ // [Image metadata](https://imagekit.io/docs/image-optimization#image-metadata---md).
+ Metadata bool `json:"metadata"`
+ // Named transformation reference. See
+ // [Named transformations](https://imagekit.io/docs/transformations#named-transformations).
+ Named string `json:"named"`
+ // Specifies the opacity level of the output image. See
+ // [Opacity](https://imagekit.io/docs/effects-and-enhancements#opacity---o).
+ Opacity float64 `json:"opacity"`
+ // If set to true, serves the original file without applying any transformations.
+ // See
+ // [Deliver original file as-is](https://imagekit.io/docs/core-delivery-features#deliver-original-file-as-is---orig-true).
+ Original bool `json:"original"`
// Specifies an overlay to be applied on the parent image or video. ImageKit
// supports overlays including images, text, videos, subtitles, and solid colors.
// See
// [Overlay using layers](https://imagekit.io/docs/transformations#overlay-using-layers).
- Overlay OverlayUnionParam `json:"overlay,omitzero"`
+ Overlay OverlayUnion `json:"overlay"`
// Extracts a specific page or frame from multi-page or layered files (PDF, PSD,
// AI). For example, specify by number (e.g., `2`), a range (e.g., `3-4` for the
// 2nd and 3rd layers), or by name (e.g., `name-layer-4` for a PSD layer). See
// [Thumbnail extraction](https://imagekit.io/docs/vector-and-animated-images#get-thumbnail-from-psd-pdf-ai-eps-and-animated-files).
- Page TransformationPageUnionParam `json:"page,omitzero"`
+ Page TransformationPageUnion `json:"page"`
+ // Specifies whether the output JPEG image should be rendered progressively.
+ // Progressive loading begins with a low-quality, pixelated version of the full
+ // image, which gradually improves to provide a faster perceived load time. See
+ // [Progressive images](https://imagekit.io/docs/image-optimization#progressive-image---pr).
+ Progressive bool `json:"progressive"`
+ // Specifies the quality of the output image for lossy formats such as JPEG, WebP,
+ // and AVIF. A higher quality value results in a larger file size with better
+ // quality, while a lower value produces a smaller file size with reduced quality.
+ // See [Quality](https://imagekit.io/docs/image-optimization#quality---q).
+ Quality float64 `json:"quality"`
// Specifies the corner radius for rounded corners (e.g., 20) or `max` for circular
// or oval shape. See
// [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
- Radius TransformationRadiusUnionParam `json:"radius,omitzero"`
+ Radius TransformationRadiusUnion `json:"radius"`
+ // Pass any transformation not directly supported by the SDK. This transformation
+ // string is appended to the URL as provided.
+ Raw string `json:"raw"`
// Specifies the rotation angle in degrees. Positive values rotate the image
// clockwise; you can also use, for example, `N40` for counterclockwise rotation or
// `auto` to use the orientation specified in the image's EXIF data. For videos,
// only the following values are supported: 0, 90, 180, 270, or 360. See
// [Rotate](https://imagekit.io/docs/effects-and-enhancements#rotate---rt).
- Rotation TransformationRotationUnionParam `json:"rotation,omitzero"`
+ Rotation TransformationRotationUnion `json:"rotation"`
// Adds a shadow beneath solid objects in an image with a transparent background.
// For AI-based drop shadows, refer to aiDropShadow. Pass `true` for a default
// shadow, or provide a string for a custom shadow. See
// [Shadow](https://imagekit.io/docs/effects-and-enhancements#shadow---e-shadow).
- Shadow TransformationShadowUnionParam `json:"shadow,omitzero"`
+ Shadow TransformationShadowUnion `json:"shadow"`
// Sharpens the input image, highlighting edges and finer details. Pass `true` for
// default sharpening, or provide a numeric value for custom sharpening. See
// [Sharpen](https://imagekit.io/docs/effects-and-enhancements#sharpen---e-sharpen).
- Sharpen TransformationSharpenUnionParam `json:"sharpen,omitzero"`
+ Sharpen TransformationSharpenUnion `json:"sharpen"`
// Specifies the start offset (in seconds) for trimming videos, e.g., `5` or
// `10.5`. Arithmetic expressions are also supported. See
// [Trim videos – Start offset](https://imagekit.io/docs/trim-videos#start-offset---so).
- StartOffset TransformationStartOffsetUnionParam `json:"startOffset,omitzero"`
+ StartOffset TransformationStartOffsetUnion `json:"startOffset"`
// An array of resolutions for adaptive bitrate streaming, e.g., [`240`, `360`,
// `480`, `720`, `1080`]. See
// [Adaptive Bitrate Streaming](https://imagekit.io/docs/adaptive-bitrate-streaming).
- StreamingResolutions []StreamingResolution `json:"streamingResolutions,omitzero"`
+ StreamingResolutions []StreamingResolution `json:"streamingResolutions"`
// Useful for images with a solid or nearly solid background and a central object.
// This parameter trims the background, leaving only the central object in the
// output image. See
// [Trim edges](https://imagekit.io/docs/effects-and-enhancements#trim-edges---t).
- Trim TransformationTrimUnionParam `json:"trim,omitzero"`
+ Trim TransformationTrimUnion `json:"trim"`
// Applies Unsharp Masking (USM), an image sharpening technique. Pass `true` for a
// default unsharp mask, or provide a string for a custom unsharp mask. See
// [Unsharp Mask](https://imagekit.io/docs/effects-and-enhancements#unsharp-mask---e-usm).
- UnsharpMask TransformationUnsharpMaskUnionParam `json:"unsharpMask,omitzero"`
+ UnsharpMask TransformationUnsharpMaskUnion `json:"unsharpMask"`
// Specifies the video codec, e.g., `h264`, `vp9`, `av1`, or `none`. See
// [Video codec](https://imagekit.io/docs/video-optimization#video-codec---vc).
//
// Any of "h264", "vp9", "av1", "none".
- VideoCodec TransformationVideoCodec `json:"videoCodec,omitzero"`
+ VideoCodec TransformationVideoCodec `json:"videoCodec"`
// Specifies the width of the output. If a value between 0 and 1 is provided, it is
// treated as a percentage (e.g., `0.4` represents 40% of the original width). You
// can also supply arithmetic expressions (e.g., `iw_div_2`). Width transformation
// – [Images](https://imagekit.io/docs/image-resize-and-crop#width---w) ·
// [Videos](https://imagekit.io/docs/video-resize-and-crop#width---w)
- Width TransformationWidthUnionParam `json:"width,omitzero"`
+ Width TransformationWidthUnion `json:"width"`
// Focus using cropped image coordinates - X coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
- X TransformationXUnionParam `json:"x,omitzero"`
+ X TransformationXUnion `json:"x"`
// Focus using cropped image coordinates - X center coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
- XCenter TransformationXCenterUnionParam `json:"xCenter,omitzero"`
+ XCenter TransformationXCenterUnion `json:"xCenter"`
// Focus using cropped image coordinates - Y coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
- Y TransformationYUnionParam `json:"y,omitzero"`
+ Y TransformationYUnion `json:"y"`
// Focus using cropped image coordinates - Y center coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
- YCenter TransformationYCenterUnionParam `json:"yCenter,omitzero"`
- paramObj
-}
-
-func (r TransformationParam) MarshalJSON() (data []byte, err error) {
- type shadow TransformationParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
-func (r *TransformationParam) UnmarshalJSON(data []byte) error {
+ YCenter TransformationYCenterUnion `json:"yCenter"`
+ // Accepts a numeric value that determines how much to zoom in or out of the
+ // cropped area. It should be used in conjunction with fo-face or fo-.
+ // See [Zoom](https://imagekit.io/docs/image-resize-and-crop#zoom---z).
+ Zoom float64 `json:"zoom"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ AIChangeBackground respjson.Field
+ AIDropShadow respjson.Field
+ AIEdit respjson.Field
+ AIRemoveBackground respjson.Field
+ AIRemoveBackgroundExternal respjson.Field
+ AIRetouch respjson.Field
+ AIUpscale respjson.Field
+ AIVariation respjson.Field
+ AspectRatio respjson.Field
+ AudioCodec respjson.Field
+ Background respjson.Field
+ Blur respjson.Field
+ Border respjson.Field
+ ColorProfile respjson.Field
+ ContrastStretch respjson.Field
+ Crop respjson.Field
+ CropMode respjson.Field
+ DefaultImage respjson.Field
+ Dpr respjson.Field
+ Duration respjson.Field
+ EndOffset respjson.Field
+ Flip respjson.Field
+ Focus respjson.Field
+ Format respjson.Field
+ Gradient respjson.Field
+ Grayscale respjson.Field
+ Height respjson.Field
+ Lossless respjson.Field
+ Metadata respjson.Field
+ Named respjson.Field
+ Opacity respjson.Field
+ Original respjson.Field
+ Overlay respjson.Field
+ Page respjson.Field
+ Progressive respjson.Field
+ Quality respjson.Field
+ Radius respjson.Field
+ Raw respjson.Field
+ Rotation respjson.Field
+ Shadow respjson.Field
+ Sharpen respjson.Field
+ StartOffset respjson.Field
+ StreamingResolutions respjson.Field
+ Trim respjson.Field
+ UnsharpMask respjson.Field
+ VideoCodec respjson.Field
+ Width respjson.Field
+ X respjson.Field
+ XCenter respjson.Field
+ Y respjson.Field
+ YCenter respjson.Field
+ Zoom respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r Transformation) RawJSON() string { return r.JSON.raw }
+func (r *Transformation) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
-func init() {
- apijson.RegisterFieldValidator[TransformationParam](
- "aiRemoveBackground", true,
- )
- apijson.RegisterFieldValidator[TransformationParam](
- "aiRemoveBackgroundExternal", true,
- )
- apijson.RegisterFieldValidator[TransformationParam](
- "aiRetouch", true,
- )
- apijson.RegisterFieldValidator[TransformationParam](
- "aiUpscale", true,
- )
- apijson.RegisterFieldValidator[TransformationParam](
- "aiVariation", true,
- )
- apijson.RegisterFieldValidator[TransformationParam](
- "contrastStretch", true,
- )
- apijson.RegisterFieldValidator[TransformationParam](
- "grayscale", true,
- )
-}
-
-// Only one field can be non-zero.
+// TransformationAIDropShadowUnion contains all possible properties and values from
+// [bool], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationAIDropShadowUnionParam struct {
- // Construct this variant with constant.ValueOf[bool]()
- OfTransformationAIDropShadowBoolean param.Opt[bool] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfTransformationAIDropShadowBoolean OfString]
+type TransformationAIDropShadowUnion struct {
+ // This field will be present if the value is a [bool] instead of an object.
+ OfTransformationAIDropShadowBoolean bool `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfTransformationAIDropShadowBoolean respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationAIDropShadowUnion) AsTransformationAIDropShadowBoolean() (v bool) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationAIDropShadowUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfTransformationAIDropShadowBoolean, u.OfString)
-}
-func (u *TransformationAIDropShadowUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationAIDropShadowUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationAIDropShadowUnionParam) asAny() any {
- if !param.IsOmitted(u.OfTransformationAIDropShadowBoolean) {
- return &u.OfTransformationAIDropShadowBoolean
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationAIDropShadowUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationAIDropShadowUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
type TransformationAIDropShadowBoolean bool
@@ -1541,29 +2010,40 @@ const (
TransformationAIDropShadowBooleanTrue TransformationAIDropShadowBoolean = true
)
-// Only one field can be non-zero.
+// TransformationAspectRatioUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationAspectRatioUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationAspectRatioUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationAspectRatioUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationAspectRatioUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationAspectRatioUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationAspectRatioUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationAspectRatioUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationAspectRatioUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationAspectRatioUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
// Specifies the audio codec, e.g., `aac`, `opus`, or `none`. See
@@ -1598,54 +2078,76 @@ const (
TransformationCropModePadExtract TransformationCropMode = "pad_extract"
)
-// Only one field can be non-zero.
+// TransformationDurationUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationDurationUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationDurationUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationDurationUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationDurationUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationDurationUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationDurationUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationDurationUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationDurationUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationDurationUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TransformationEndOffsetUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationEndOffsetUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationEndOffsetUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationEndOffsetUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationEndOffsetUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationEndOffsetUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationEndOffsetUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationEndOffsetUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationEndOffsetUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationEndOffsetUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
// Flips or mirrors an image either horizontally, vertically, or both. Acceptable
@@ -1683,30 +2185,40 @@ const (
TransformationFormatOrig TransformationFormat = "orig"
)
-// Only one field can be non-zero.
+// TransformationGradientUnion contains all possible properties and values from
+// [bool], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationGradientUnionParam struct {
- // Construct this variant with constant.ValueOf[bool]()
- OfTransformationGradientBoolean param.Opt[bool] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfTransformationGradientBoolean OfString]
+type TransformationGradientUnion struct {
+ // This field will be present if the value is a [bool] instead of an object.
+ OfTransformationGradientBoolean bool `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfTransformationGradientBoolean respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationGradientUnion) AsTransformationGradientBoolean() (v bool) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationGradientUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfTransformationGradientBoolean, u.OfString)
-}
-func (u *TransformationGradientUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationGradientUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationGradientUnionParam) asAny() any {
- if !param.IsOmitted(u.OfTransformationGradientBoolean) {
- return &u.OfTransformationGradientBoolean
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationGradientUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationGradientUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
type TransformationGradientBoolean bool
@@ -1715,131 +2227,185 @@ const (
TransformationGradientBooleanTrue TransformationGradientBoolean = true
)
-// Only one field can be non-zero.
+// TransformationHeightUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationHeightUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationHeightUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationHeightUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationHeightUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationHeightUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationHeightUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationHeightUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationHeightUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationHeightUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TransformationPageUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationPageUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationPageUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationPageUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationPageUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationPageUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationPageUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationPageUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationPageUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationPageUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TransformationRadiusUnion contains all possible properties and values from
+// [float64], [constant.Max].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationRadiusUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- // Construct this variant with constant.ValueOf[constant.Max]()
- OfMax constant.Max `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfMax]
+type TransformationRadiusUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [constant.Max] instead of an
+ // object.
+ OfMax constant.Max `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfMax respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationRadiusUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationRadiusUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfMax)
-}
-func (u *TransformationRadiusUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationRadiusUnion) AsMax() (v constant.Max) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationRadiusUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfMax) {
- return &u.OfMax
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationRadiusUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationRadiusUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TransformationRotationUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationRotationUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationRotationUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationRotationUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationRotationUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationRotationUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationRotationUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationRotationUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationRotationUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationRotationUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TransformationShadowUnion contains all possible properties and values from
+// [bool], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationShadowUnionParam struct {
- // Construct this variant with constant.ValueOf[bool]()
- OfTransformationShadowBoolean param.Opt[bool] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfTransformationShadowBoolean OfString]
+type TransformationShadowUnion struct {
+ // This field will be present if the value is a [bool] instead of an object.
+ OfTransformationShadowBoolean bool `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfTransformationShadowBoolean respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationShadowUnion) AsTransformationShadowBoolean() (v bool) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationShadowUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfTransformationShadowBoolean, u.OfString)
-}
-func (u *TransformationShadowUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationShadowUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationShadowUnionParam) asAny() any {
- if !param.IsOmitted(u.OfTransformationShadowBoolean) {
- return &u.OfTransformationShadowBoolean
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationShadowUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationShadowUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
type TransformationShadowBoolean bool
@@ -1848,30 +2414,40 @@ const (
TransformationShadowBooleanTrue TransformationShadowBoolean = true
)
-// Only one field can be non-zero.
+// TransformationSharpenUnion contains all possible properties and values from
+// [bool], [float64].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationSharpenUnionParam struct {
- // Construct this variant with constant.ValueOf[bool]()
- OfTransformationSharpenBoolean param.Opt[bool] `json:",omitzero,inline"`
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfTransformationSharpenBoolean OfFloat]
+type TransformationSharpenUnion struct {
+ // This field will be present if the value is a [bool] instead of an object.
+ OfTransformationSharpenBoolean bool `json:",inline"`
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ JSON struct {
+ OfTransformationSharpenBoolean respjson.Field
+ OfFloat respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationSharpenUnion) AsTransformationSharpenBoolean() (v bool) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationSharpenUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfTransformationSharpenBoolean, u.OfFloat)
-}
-func (u *TransformationSharpenUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationSharpenUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationSharpenUnionParam) asAny() any {
- if !param.IsOmitted(u.OfTransformationSharpenBoolean) {
- return &u.OfTransformationSharpenBoolean
- } else if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationSharpenUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationSharpenUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
type TransformationSharpenBoolean bool
@@ -1880,55 +2456,76 @@ const (
TransformationSharpenBooleanTrue TransformationSharpenBoolean = true
)
-// Only one field can be non-zero.
+// TransformationStartOffsetUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationStartOffsetUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationStartOffsetUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationStartOffsetUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationStartOffsetUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationStartOffsetUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationStartOffsetUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationStartOffsetUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationStartOffsetUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationStartOffsetUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TransformationTrimUnion contains all possible properties and values from [bool],
+// [float64].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationTrimUnionParam struct {
- // Construct this variant with constant.ValueOf[bool]()
- OfTransformationTrimBoolean param.Opt[bool] `json:",omitzero,inline"`
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfTransformationTrimBoolean OfFloat]
+type TransformationTrimUnion struct {
+ // This field will be present if the value is a [bool] instead of an object.
+ OfTransformationTrimBoolean bool `json:",inline"`
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ JSON struct {
+ OfTransformationTrimBoolean respjson.Field
+ OfFloat respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationTrimUnion) AsTransformationTrimBoolean() (v bool) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationTrimUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfTransformationTrimBoolean, u.OfFloat)
-}
-func (u *TransformationTrimUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationTrimUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationTrimUnionParam) asAny() any {
- if !param.IsOmitted(u.OfTransformationTrimBoolean) {
- return &u.OfTransformationTrimBoolean
- } else if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationTrimUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationTrimUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
type TransformationTrimBoolean bool
@@ -1937,30 +2534,40 @@ const (
TransformationTrimBooleanTrue TransformationTrimBoolean = true
)
-// Only one field can be non-zero.
+// TransformationUnsharpMaskUnion contains all possible properties and values from
+// [bool], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationUnsharpMaskUnionParam struct {
- // Construct this variant with constant.ValueOf[bool]()
- OfTransformationUnsharpMaskBoolean param.Opt[bool] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfTransformationUnsharpMaskBoolean OfString]
+type TransformationUnsharpMaskUnion struct {
+ // This field will be present if the value is a [bool] instead of an object.
+ OfTransformationUnsharpMaskBoolean bool `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfTransformationUnsharpMaskBoolean respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationUnsharpMaskUnion) AsTransformationUnsharpMaskBoolean() (v bool) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationUnsharpMaskUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfTransformationUnsharpMaskBoolean, u.OfString)
-}
-func (u *TransformationUnsharpMaskUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationUnsharpMaskUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationUnsharpMaskUnionParam) asAny() any {
- if !param.IsOmitted(u.OfTransformationUnsharpMaskBoolean) {
- return &u.OfTransformationUnsharpMaskBoolean
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationUnsharpMaskUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationUnsharpMaskUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
type TransformationUnsharpMaskBoolean bool
@@ -1980,129 +2587,184 @@ const (
TransformationVideoCodecNone TransformationVideoCodec = "none"
)
-// Only one field can be non-zero.
+// TransformationWidthUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationWidthUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationWidthUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationWidthUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationWidthUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationWidthUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationWidthUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationWidthUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationWidthUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationWidthUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TransformationXUnion contains all possible properties and values from [float64],
+// [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationXUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationXUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationXUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationXUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationXUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationXUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationXUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationXUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationXUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TransformationXCenterUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationXCenterUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationXCenterUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationXCenterUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationXCenterUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationXCenterUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationXCenterUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationXCenterUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationXCenterUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationXCenterUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TransformationYUnion contains all possible properties and values from [float64],
+// [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationYUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationYUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationYUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationYUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationYUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationYUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationYUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationYUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationYUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-// Only one field can be non-zero.
+// TransformationYCenterUnion contains all possible properties and values from
+// [float64], [string].
//
-// Use [param.IsOmitted] to confirm if a field is set.
-type TransformationYCenterUnionParam struct {
- OfFloat param.Opt[float64] `json:",omitzero,inline"`
- OfString param.Opt[string] `json:",omitzero,inline"`
- paramUnion
+// Use the methods beginning with 'As' to cast the union to one of its variants.
+//
+// If the underlying value is not a json object, one of the following properties
+// will be valid: OfFloat OfString]
+type TransformationYCenterUnion struct {
+ // This field will be present if the value is a [float64] instead of an object.
+ OfFloat float64 `json:",inline"`
+ // This field will be present if the value is a [string] instead of an object.
+ OfString string `json:",inline"`
+ JSON struct {
+ OfFloat respjson.Field
+ OfString respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+func (u TransformationYCenterUnion) AsFloat() (v float64) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u TransformationYCenterUnionParam) MarshalJSON() ([]byte, error) {
- return param.MarshalUnion(u, u.OfFloat, u.OfString)
-}
-func (u *TransformationYCenterUnionParam) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, u)
+func (u TransformationYCenterUnion) AsString() (v string) {
+ apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
+ return
}
-func (u *TransformationYCenterUnionParam) asAny() any {
- if !param.IsOmitted(u.OfFloat) {
- return &u.OfFloat.Value
- } else if !param.IsOmitted(u.OfString) {
- return &u.OfString.Value
- }
- return nil
+// Returns the unmodified JSON received from the API
+func (u TransformationYCenterUnion) RawJSON() string { return u.JSON.raw }
+
+func (r *TransformationYCenterUnion) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
// By default, the transformation string is added as a query parameter in the URL,
@@ -2116,7 +2778,7 @@ const (
TransformationPositionQuery TransformationPosition = "query"
)
-type VideoOverlayParam struct {
+type VideoOverlay struct {
// Specifies the relative path to the video used as an overlay.
Input string `json:"input,required"`
Type constant.Video `json:"type,required"`
@@ -2125,15 +2787,29 @@ type VideoOverlayParam struct {
// format automatically. To always use base64 encoding (`ie-{base64}`), set this
// parameter to `base64`. To always use plain text (`i-{input}`), set it to
// `plain`.
- Encoding string `json:"encoding,omitzero"`
+ //
+ // Any of "auto", "plain", "base64".
+ Encoding string `json:"encoding"`
// Array of transformation to be applied to the overlay video. Except
// `streamingResolutions`, all other video transformations are supported. See
// [Video transformations](https://imagekit.io/docs/video-transformation).
- Transformation []TransformationParam `json:"transformation,omitzero"`
- BaseOverlayParam
+ Transformation []Transformation `json:"transformation"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Input respjson.Field
+ Type respjson.Field
+ Encoding respjson.Field
+ Transformation respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+ BaseOverlay
+}
+
+// Returns the unmodified JSON received from the API
+func (r VideoOverlay) RawJSON() string { return r.JSON.raw }
+func (r *VideoOverlay) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
}
-func (r VideoOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow VideoOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
-}
+func (VideoOverlay) ImplOverlayUnion() {}
From 6cbddffab95c89b964fc29ce119ceb70d7ebded5 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 21 Oct 2025 10:14:11 +0000
Subject: [PATCH 02/27] feat(api): fix go sdk breaking changes
---
.stats.yml | 8 +-
aliases.go | 121 +-
api.md | 42 +-
client.go | 2 +
dummy.go | 108 ++
dummy_test.go | 1152 +++++++++++++++++++
shared/shared.go | 2875 ++++++++++++++++++----------------------------
7 files changed, 2471 insertions(+), 1837 deletions(-)
create mode 100644 dummy.go
create mode 100644 dummy_test.go
diff --git a/.stats.yml b/.stats.yml
index 27ad9e7..29960c9 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 42
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-0e4fa3c1f9d8cafecb9671fa76c0ff9156c643e05837804679e5e336bad8f4c1.yml
-openapi_spec_hash: 4544b950730b721c252eb519358b8609
-config_hash: 3d7a0bc2844e9fb4797149b233e85770
+configured_endpoints: 43
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml
+openapi_spec_hash: a9aa620376fce66532c84f9364209b0b
+config_hash: bb7229ef61cee50cd6c1ac02a5a74e81
diff --git a/aliases.go b/aliases.go
index 53594e7..33ed8d6 100644
--- a/aliases.go
+++ b/aliases.go
@@ -17,28 +17,7 @@ type paramObj = param.APIObject
type Error = apierror.Error
// This is an alias to an internal type.
-type BaseOverlay = shared.BaseOverlay
-
-// Array of extensions to be applied to the asset. Each extension can be configured
-// with specific parameters based on the extension type.
-//
-// This is an alias to an internal type.
-type Extensions = shared.Extensions
-
-// This is an alias to an internal type.
-type ExtensionUnion = shared.ExtensionUnion
-
-// This is an alias to an internal type.
-type ExtensionRemoveBg = shared.ExtensionRemoveBg
-
-// This is an alias to an internal type.
-type ExtensionRemoveBgOptions = shared.ExtensionRemoveBgOptions
-
-// This is an alias to an internal type.
-type ExtensionAutoTagging = shared.ExtensionAutoTagging
-
-// This is an alias to an internal type.
-type ExtensionAIAutoDescription = shared.ExtensionAIAutoDescription
+type BaseOverlayParam = shared.BaseOverlayParam
// Array of extensions to be applied to the asset. Each extension can be configured
// with specific parameters based on the extension type.
@@ -66,10 +45,10 @@ type ExtensionAIAutoDescriptionParam = shared.ExtensionAIAutoDescriptionParam
// support for responsive image generation with breakpoints.
//
// This is an alias to an internal type.
-type GetImageAttributesOptions = shared.GetImageAttributesOptions
+type GetImageAttributesOptionsParam = shared.GetImageAttributesOptionsParam
// This is an alias to an internal type.
-type ImageOverlay = shared.ImageOverlay
+type ImageOverlayParam = shared.ImageOverlayParam
// Specifies an overlay to be applied on the parent image or video. ImageKit
// supports overlays including images, text, videos, subtitles, and solid colors.
@@ -77,10 +56,10 @@ type ImageOverlay = shared.ImageOverlay
// [Overlay using layers](https://imagekit.io/docs/transformations#overlay-using-layers).
//
// This is an alias to an internal type.
-type OverlayUnion = shared.OverlayUnion
+type OverlayUnionParam = shared.OverlayUnionParam
// This is an alias to an internal type.
-type OverlayPosition = shared.OverlayPosition
+type OverlayPositionParam = shared.OverlayPositionParam
// Specifies the position of the overlay relative to the parent image or video.
// Maps to `lfo` in the URL.
@@ -122,7 +101,7 @@ const OverlayPositionFocusBottomRight = shared.OverlayPositionFocusBottomRight
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
//
// This is an alias to an internal type.
-type OverlayPositionXUnion = shared.OverlayPositionXUnion
+type OverlayPositionXUnionParam = shared.OverlayPositionXUnionParam
// Specifies the y-coordinate of the top-left corner of the base asset where the
// overlay's top-left corner will be positioned. It also accepts arithmetic
@@ -131,10 +110,10 @@ type OverlayPositionXUnion = shared.OverlayPositionXUnion
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
//
// This is an alias to an internal type.
-type OverlayPositionYUnion = shared.OverlayPositionYUnion
+type OverlayPositionYUnionParam = shared.OverlayPositionYUnionParam
// This is an alias to an internal type.
-type OverlayTiming = shared.OverlayTiming
+type OverlayTimingParam = shared.OverlayTimingParam
// Specifies the duration (in seconds) during which the overlay should appear on
// the base video. Accepts a positive number up to two decimal places (e.g., `20`
@@ -142,7 +121,7 @@ type OverlayTiming = shared.OverlayTiming
// Applies only if the base asset is a video. Maps to `ldu` in the URL.
//
// This is an alias to an internal type.
-type OverlayTimingDurationUnion = shared.OverlayTimingDurationUnion
+type OverlayTimingDurationUnionParam = shared.OverlayTimingDurationUnionParam
// Specifies the end time (in seconds) for when the overlay should disappear from
// the base video. If both end and duration are provided, duration is ignored.
@@ -151,7 +130,7 @@ type OverlayTimingDurationUnion = shared.OverlayTimingDurationUnion
// the base asset is a video. Maps to `leo` in the URL.
//
// This is an alias to an internal type.
-type OverlayTimingEndUnion = shared.OverlayTimingEndUnion
+type OverlayTimingEndUnionParam = shared.OverlayTimingEndUnionParam
// Specifies the start time (in seconds) for when the overlay should appear on the
// base video. Accepts a positive number up to two decimal places (e.g., `20` or
@@ -159,19 +138,19 @@ type OverlayTimingEndUnion = shared.OverlayTimingEndUnion
// Applies only if the base asset is a video. Maps to `lso` in the URL.
//
// This is an alias to an internal type.
-type OverlayTimingStartUnion = shared.OverlayTimingStartUnion
+type OverlayTimingStartUnionParam = shared.OverlayTimingStartUnionParam
// Resulting set of attributes suitable for an HTML `
` element. Useful for
// enabling responsive image loading with `srcSet` and `sizes`.
//
// This is an alias to an internal type.
-type ResponsiveImageAttributes = shared.ResponsiveImageAttributes
+type ResponsiveImageAttributesParam = shared.ResponsiveImageAttributesParam
// This is an alias to an internal type.
-type SolidColorOverlay = shared.SolidColorOverlay
+type SolidColorOverlayParam = shared.SolidColorOverlayParam
// This is an alias to an internal type.
-type SolidColorOverlayTransformation = shared.SolidColorOverlayTransformation
+type SolidColorOverlayTransformationParam = shared.SolidColorOverlayTransformationParam
// Creates a linear gradient with two colors. Pass `true` for a default gradient,
// or provide a string for a custom gradient. Only works if the base asset is an
@@ -179,7 +158,7 @@ type SolidColorOverlayTransformation = shared.SolidColorOverlayTransformation
// [gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
//
// This is an alias to an internal type.
-type SolidColorOverlayTransformationGradientUnion = shared.SolidColorOverlayTransformationGradientUnion
+type SolidColorOverlayTransformationGradientUnionParam = shared.SolidColorOverlayTransformationGradientUnionParam
// This is an alias to an internal type.
type SolidColorOverlayTransformationGradientBoolean = shared.SolidColorOverlayTransformationGradientBoolean
@@ -189,27 +168,27 @@ type SolidColorOverlayTransformationGradientBoolean = shared.SolidColorOverlayTr
// [arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
//
// This is an alias to an internal type.
-type SolidColorOverlayTransformationHeightUnion = shared.SolidColorOverlayTransformationHeightUnion
+type SolidColorOverlayTransformationHeightUnionParam = shared.SolidColorOverlayTransformationHeightUnionParam
// Specifies the corner radius of the solid color overlay. Set to `max` for
// circular or oval shape. See
// [radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
//
// This is an alias to an internal type.
-type SolidColorOverlayTransformationRadiusUnion = shared.SolidColorOverlayTransformationRadiusUnion
+type SolidColorOverlayTransformationRadiusUnionParam = shared.SolidColorOverlayTransformationRadiusUnionParam
// Controls the width of the solid color overlay. Accepts a numeric value or an
// arithmetic expression (e.g., `bw_mul_0.2` or `bh_div_2`). Learn about
// [arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
//
// This is an alias to an internal type.
-type SolidColorOverlayTransformationWidthUnion = shared.SolidColorOverlayTransformationWidthUnion
+type SolidColorOverlayTransformationWidthUnionParam = shared.SolidColorOverlayTransformationWidthUnionParam
// Options for generating ImageKit URLs with transformations. See the
// [Transformations guide](https://imagekit.io/docs/transformations).
//
// This is an alias to an internal type.
-type SrcOptions = shared.SrcOptions
+type SrcOptionsParam = shared.SrcOptionsParam
// Available streaming resolutions for
// [adaptive bitrate streaming](https://imagekit.io/docs/adaptive-bitrate-streaming)
@@ -239,14 +218,14 @@ const StreamingResolution1440 = shared.StreamingResolution1440
const StreamingResolution2160 = shared.StreamingResolution2160
// This is an alias to an internal type.
-type SubtitleOverlay = shared.SubtitleOverlay
+type SubtitleOverlayParam = shared.SubtitleOverlayParam
// Subtitle styling options.
// [Learn more](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
// from the docs.
//
// This is an alias to an internal type.
-type SubtitleOverlayTransformation = shared.SubtitleOverlayTransformation
+type SubtitleOverlayTransformationParam = shared.SubtitleOverlayTransformationParam
// Sets the typography style of the subtitle text. Supports values are `b` for
// bold, `i` for italics, and `b_i` for bold with italics.
@@ -266,10 +245,10 @@ const SubtitleOverlayTransformationTypographyI = shared.SubtitleOverlayTransform
const SubtitleOverlayTransformationTypographyBI = shared.SubtitleOverlayTransformationTypographyBI
// This is an alias to an internal type.
-type TextOverlay = shared.TextOverlay
+type TextOverlayParam = shared.TextOverlayParam
// This is an alias to an internal type.
-type TextOverlayTransformation = shared.TextOverlayTransformation
+type TextOverlayTransformationParam = shared.TextOverlayTransformationParam
// Flip the text overlay horizontally, vertically, or both.
//
@@ -292,7 +271,7 @@ const TextOverlayTransformationFlipVH = shared.TextOverlayTransformationFlipVH
// arithmetic expression.
//
// This is an alias to an internal type.
-type TextOverlayTransformationFontSizeUnion = shared.TextOverlayTransformationFontSizeUnion
+type TextOverlayTransformationFontSizeUnionParam = shared.TextOverlayTransformationFontSizeUnionParam
// Specifies the inner alignment of the text when width is more than the text
// length.
@@ -315,26 +294,26 @@ const TextOverlayTransformationInnerAlignmentCenter = shared.TextOverlayTransfor
// such as `bw_mul_0.2`, or `bh_div_20`.
//
// This is an alias to an internal type.
-type TextOverlayTransformationLineHeightUnion = shared.TextOverlayTransformationLineHeightUnion
+type TextOverlayTransformationLineHeightUnionParam = shared.TextOverlayTransformationLineHeightUnionParam
// Specifies the padding around the overlaid text. Can be provided as a single
// positive integer or multiple values separated by underscores (following CSS
// shorthand order). Arithmetic expressions are also accepted.
//
// This is an alias to an internal type.
-type TextOverlayTransformationPaddingUnion = shared.TextOverlayTransformationPaddingUnion
+type TextOverlayTransformationPaddingUnionParam = shared.TextOverlayTransformationPaddingUnionParam
// Specifies the corner radius of the text overlay. Set to `max` to achieve a
// circular or oval shape.
//
// This is an alias to an internal type.
-type TextOverlayTransformationRadiusUnion = shared.TextOverlayTransformationRadiusUnion
+type TextOverlayTransformationRadiusUnionParam = shared.TextOverlayTransformationRadiusUnionParam
// Specifies the rotation angle of the text overlay. Accepts a numeric value for
// clockwise rotation or a string prefixed with "N" for counter-clockwise rotation.
//
// This is an alias to an internal type.
-type TextOverlayTransformationRotationUnion = shared.TextOverlayTransformationRotationUnion
+type TextOverlayTransformationRotationUnionParam = shared.TextOverlayTransformationRotationUnionParam
// Specifies the maximum width (in pixels) of the overlaid text. The text wraps
// automatically, and arithmetic expressions (e.g., `bw_mul_0.2` or `bh_div_2`) are
@@ -342,7 +321,7 @@ type TextOverlayTransformationRotationUnion = shared.TextOverlayTransformationRo
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
//
// This is an alias to an internal type.
-type TextOverlayTransformationWidthUnion = shared.TextOverlayTransformationWidthUnion
+type TextOverlayTransformationWidthUnionParam = shared.TextOverlayTransformationWidthUnionParam
// The SDK provides easy-to-use names for transformations. These names are
// converted to the corresponding transformation string before being added to the
@@ -352,7 +331,7 @@ type TextOverlayTransformationWidthUnion = shared.TextOverlayTransformationWidth
// [Transformations documentation](https://imagekit.io/docs/transformations).
//
// This is an alias to an internal type.
-type Transformation = shared.Transformation
+type TransformationParam = shared.TransformationParam
// Adds an AI-based drop shadow around a foreground object on a transparent or
// removed background. Optionally, control the direction, elevation, and saturation
@@ -362,7 +341,7 @@ type Transformation = shared.Transformation
// [AI Drop Shadow](https://imagekit.io/docs/ai-transformations#ai-drop-shadow-e-dropshadow).
//
// This is an alias to an internal type.
-type TransformationAIDropShadowUnion = shared.TransformationAIDropShadowUnion
+type TransformationAIDropShadowUnionParam = shared.TransformationAIDropShadowUnionParam
// This is an alias to an internal type.
type TransformationAIDropShadowBoolean = shared.TransformationAIDropShadowBoolean
@@ -373,7 +352,7 @@ type TransformationAIDropShadowBoolean = shared.TransformationAIDropShadowBoolea
// [Image resize and crop – Aspect ratio](https://imagekit.io/docs/image-resize-and-crop#aspect-ratio---ar).
//
// This is an alias to an internal type.
-type TransformationAspectRatioUnion = shared.TransformationAspectRatioUnion
+type TransformationAspectRatioUnionParam = shared.TransformationAspectRatioUnionParam
// Specifies the audio codec, e.g., `aac`, `opus`, or `none`. See
// [Audio codec](https://imagekit.io/docs/video-optimization#audio-codec---ac).
@@ -432,7 +411,7 @@ const TransformationCropModePadExtract = shared.TransformationCropModePadExtract
// [Trim videos – Duration](https://imagekit.io/docs/trim-videos#duration---du).
//
// This is an alias to an internal type.
-type TransformationDurationUnion = shared.TransformationDurationUnion
+type TransformationDurationUnionParam = shared.TransformationDurationUnionParam
// Specifies the end offset (in seconds) for trimming videos, e.g., `5` or `10.5`.
// Typically used with startOffset to define a time window. Arithmetic expressions
@@ -440,7 +419,7 @@ type TransformationDurationUnion = shared.TransformationDurationUnion
// [Trim videos – End offset](https://imagekit.io/docs/trim-videos#end-offset---eo).
//
// This is an alias to an internal type.
-type TransformationEndOffsetUnion = shared.TransformationEndOffsetUnion
+type TransformationEndOffsetUnionParam = shared.TransformationEndOffsetUnionParam
// Flips or mirrors an image either horizontally, vertically, or both. Acceptable
// values: `h` (horizontal), `v` (vertical), `h_v` (horizontal and vertical), or
@@ -510,7 +489,7 @@ const TransformationFormatOrig = shared.TransformationFormatOrig
// [Gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
//
// This is an alias to an internal type.
-type TransformationGradientUnion = shared.TransformationGradientUnion
+type TransformationGradientUnionParam = shared.TransformationGradientUnionParam
// This is an alias to an internal type.
type TransformationGradientBoolean = shared.TransformationGradientBoolean
@@ -523,7 +502,7 @@ type TransformationGradientBoolean = shared.TransformationGradientBoolean
// [Videos](https://imagekit.io/docs/video-resize-and-crop#height---h)
//
// This is an alias to an internal type.
-type TransformationHeightUnion = shared.TransformationHeightUnion
+type TransformationHeightUnionParam = shared.TransformationHeightUnionParam
// Extracts a specific page or frame from multi-page or layered files (PDF, PSD,
// AI). For example, specify by number (e.g., `2`), a range (e.g., `3-4` for the
@@ -531,14 +510,14 @@ type TransformationHeightUnion = shared.TransformationHeightUnion
// [Thumbnail extraction](https://imagekit.io/docs/vector-and-animated-images#get-thumbnail-from-psd-pdf-ai-eps-and-animated-files).
//
// This is an alias to an internal type.
-type TransformationPageUnion = shared.TransformationPageUnion
+type TransformationPageUnionParam = shared.TransformationPageUnionParam
// Specifies the corner radius for rounded corners (e.g., 20) or `max` for circular
// or oval shape. See
// [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
//
// This is an alias to an internal type.
-type TransformationRadiusUnion = shared.TransformationRadiusUnion
+type TransformationRadiusUnionParam = shared.TransformationRadiusUnionParam
// Specifies the rotation angle in degrees. Positive values rotate the image
// clockwise; you can also use, for example, `N40` for counterclockwise rotation or
@@ -547,7 +526,7 @@ type TransformationRadiusUnion = shared.TransformationRadiusUnion
// [Rotate](https://imagekit.io/docs/effects-and-enhancements#rotate---rt).
//
// This is an alias to an internal type.
-type TransformationRotationUnion = shared.TransformationRotationUnion
+type TransformationRotationUnionParam = shared.TransformationRotationUnionParam
// Adds a shadow beneath solid objects in an image with a transparent background.
// For AI-based drop shadows, refer to aiDropShadow. Pass `true` for a default
@@ -555,7 +534,7 @@ type TransformationRotationUnion = shared.TransformationRotationUnion
// [Shadow](https://imagekit.io/docs/effects-and-enhancements#shadow---e-shadow).
//
// This is an alias to an internal type.
-type TransformationShadowUnion = shared.TransformationShadowUnion
+type TransformationShadowUnionParam = shared.TransformationShadowUnionParam
// This is an alias to an internal type.
type TransformationShadowBoolean = shared.TransformationShadowBoolean
@@ -565,7 +544,7 @@ type TransformationShadowBoolean = shared.TransformationShadowBoolean
// [Sharpen](https://imagekit.io/docs/effects-and-enhancements#sharpen---e-sharpen).
//
// This is an alias to an internal type.
-type TransformationSharpenUnion = shared.TransformationSharpenUnion
+type TransformationSharpenUnionParam = shared.TransformationSharpenUnionParam
// This is an alias to an internal type.
type TransformationSharpenBoolean = shared.TransformationSharpenBoolean
@@ -575,7 +554,7 @@ type TransformationSharpenBoolean = shared.TransformationSharpenBoolean
// [Trim videos – Start offset](https://imagekit.io/docs/trim-videos#start-offset---so).
//
// This is an alias to an internal type.
-type TransformationStartOffsetUnion = shared.TransformationStartOffsetUnion
+type TransformationStartOffsetUnionParam = shared.TransformationStartOffsetUnionParam
// Useful for images with a solid or nearly solid background and a central object.
// This parameter trims the background, leaving only the central object in the
@@ -583,7 +562,7 @@ type TransformationStartOffsetUnion = shared.TransformationStartOffsetUnion
// [Trim edges](https://imagekit.io/docs/effects-and-enhancements#trim-edges---t).
//
// This is an alias to an internal type.
-type TransformationTrimUnion = shared.TransformationTrimUnion
+type TransformationTrimUnionParam = shared.TransformationTrimUnionParam
// This is an alias to an internal type.
type TransformationTrimBoolean = shared.TransformationTrimBoolean
@@ -593,7 +572,7 @@ type TransformationTrimBoolean = shared.TransformationTrimBoolean
// [Unsharp Mask](https://imagekit.io/docs/effects-and-enhancements#unsharp-mask---e-usm).
//
// This is an alias to an internal type.
-type TransformationUnsharpMaskUnion = shared.TransformationUnsharpMaskUnion
+type TransformationUnsharpMaskUnionParam = shared.TransformationUnsharpMaskUnionParam
// This is an alias to an internal type.
type TransformationUnsharpMaskBoolean = shared.TransformationUnsharpMaskBoolean
@@ -623,31 +602,31 @@ const TransformationVideoCodecNone = shared.TransformationVideoCodecNone
// [Videos](https://imagekit.io/docs/video-resize-and-crop#width---w)
//
// This is an alias to an internal type.
-type TransformationWidthUnion = shared.TransformationWidthUnion
+type TransformationWidthUnionParam = shared.TransformationWidthUnionParam
// Focus using cropped image coordinates - X coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
//
// This is an alias to an internal type.
-type TransformationXUnion = shared.TransformationXUnion
+type TransformationXUnionParam = shared.TransformationXUnionParam
// Focus using cropped image coordinates - X center coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
//
// This is an alias to an internal type.
-type TransformationXCenterUnion = shared.TransformationXCenterUnion
+type TransformationXCenterUnionParam = shared.TransformationXCenterUnionParam
// Focus using cropped image coordinates - Y coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
//
// This is an alias to an internal type.
-type TransformationYUnion = shared.TransformationYUnion
+type TransformationYUnionParam = shared.TransformationYUnionParam
// Focus using cropped image coordinates - Y center coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
//
// This is an alias to an internal type.
-type TransformationYCenterUnion = shared.TransformationYCenterUnion
+type TransformationYCenterUnionParam = shared.TransformationYCenterUnionParam
// By default, the transformation string is added as a query parameter in the URL,
// e.g., `?tr=w-100,h-100`. If you want to add the transformation string in the
@@ -664,4 +643,4 @@ const TransformationPositionPath = shared.TransformationPositionPath
const TransformationPositionQuery = shared.TransformationPositionQuery
// This is an alias to an internal type.
-type VideoOverlay = shared.VideoOverlay
+type VideoOverlayParam = shared.VideoOverlayParam
diff --git a/api.md b/api.md
index b66fbd8..2589aa8 100644
--- a/api.md
+++ b/api.md
@@ -1,28 +1,30 @@
# Shared Params Types
+- shared.BaseOverlayParam
- shared.ExtensionsParam
-
-# Shared Response Types
-
-- shared.BaseOverlay
-- shared.Extensions
-- shared.GetImageAttributesOptions
-- shared.ImageOverlay
-- shared.OverlayUnion
-- shared.OverlayPosition
-- shared.OverlayTiming
-- shared.ResponsiveImageAttributes
-- shared.SolidColorOverlay
-- shared.SolidColorOverlayTransformation
-- shared.SrcOptions
+- shared.GetImageAttributesOptionsParam
+- shared.ImageOverlayParam
+- shared.OverlayUnionParam
+- shared.OverlayPositionParam
+- shared.OverlayTimingParam
+- shared.ResponsiveImageAttributesParam
+- shared.SolidColorOverlayParam
+- shared.SolidColorOverlayTransformationParam
+- shared.SrcOptionsParam
- shared.StreamingResolution
-- shared.SubtitleOverlay
-- shared.SubtitleOverlayTransformation
-- shared.TextOverlay
-- shared.TextOverlayTransformation
-- shared.Transformation
+- shared.SubtitleOverlayParam
+- shared.SubtitleOverlayTransformationParam
+- shared.TextOverlayParam
+- shared.TextOverlayTransformationParam
+- shared.TransformationParam
- shared.TransformationPosition
-- shared.VideoOverlay
+- shared.VideoOverlayParam
+
+# Dummy
+
+Methods:
+
+- client.Dummy.New(ctx context.Context, body imagekit.DummyNewParams) error
# CustomMetadataFields
diff --git a/client.go b/client.go
index e275d74..f53998f 100644
--- a/client.go
+++ b/client.go
@@ -18,6 +18,7 @@ import (
// directly, and instead use the [NewClient] method instead.
type Client struct {
Options []option.RequestOption
+ Dummy DummyService
CustomMetadataFields CustomMetadataFieldService
Files FileService
Assets AssetService
@@ -60,6 +61,7 @@ func NewClient(opts ...option.RequestOption) (r Client) {
r = Client{Options: opts}
+ r.Dummy = NewDummyService(opts...)
r.CustomMetadataFields = NewCustomMetadataFieldService(opts...)
r.Files = NewFileService(opts...)
r.Assets = NewAssetService(opts...)
diff --git a/dummy.go b/dummy.go
new file mode 100644
index 0000000..780af86
--- /dev/null
+++ b/dummy.go
@@ -0,0 +1,108 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+package imagekit
+
+import (
+ "context"
+ "net/http"
+ "slices"
+
+ "github.com/imagekit-developer/imagekit-go/v2/internal/apijson"
+ "github.com/imagekit-developer/imagekit-go/v2/internal/requestconfig"
+ "github.com/imagekit-developer/imagekit-go/v2/option"
+ "github.com/imagekit-developer/imagekit-go/v2/packages/param"
+ "github.com/imagekit-developer/imagekit-go/v2/shared"
+)
+
+// DummyService contains methods and other services that help with interacting with
+// the ImageKit API.
+//
+// Note, unlike clients, this service does not read variables from the environment
+// automatically. You should not instantiate this service directly, and instead use
+// the [NewDummyService] method instead.
+type DummyService struct {
+ Options []option.RequestOption
+}
+
+// NewDummyService generates a new service that applies the given options to each
+// request. These options are applied after the parent client's options (if there
+// is one), and before any request-specific options.
+func NewDummyService(opts ...option.RequestOption) (r DummyService) {
+ r = DummyService{}
+ r.Options = opts
+ return
+}
+
+// Internal test endpoint for SDK generation purposes only. This endpoint
+// demonstrates usage of all shared models defined in the Stainless configuration
+// and is not intended for public consumption.
+func (r *DummyService) New(ctx context.Context, body DummyNewParams, opts ...option.RequestOption) (err error) {
+ opts = slices.Concat(r.Options, opts)
+ opts = append([]option.RequestOption{option.WithHeader("Accept", "")}, opts...)
+ path := "v1/dummy/test"
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, nil, opts...)
+ return
+}
+
+type DummyNewParams struct {
+ BaseOverlay shared.BaseOverlayParam `json:"baseOverlay,omitzero"`
+ // Array of extensions to be applied to the asset. Each extension can be configured
+ // with specific parameters based on the extension type.
+ Extensions shared.ExtensionsParam `json:"extensions,omitzero"`
+ // Options for generating responsive image attributes including `src`, `srcSet`,
+ // and `sizes` for HTML `
` elements. This schema extends `SrcOptions` to add
+ // support for responsive image generation with breakpoints.
+ GetImageAttributesOptions shared.GetImageAttributesOptionsParam `json:"getImageAttributesOptions,omitzero"`
+ ImageOverlay shared.ImageOverlayParam `json:"imageOverlay,omitzero"`
+ // Specifies an overlay to be applied on the parent image or video. ImageKit
+ // supports overlays including images, text, videos, subtitles, and solid colors.
+ // See
+ // [Overlay using layers](https://imagekit.io/docs/transformations#overlay-using-layers).
+ Overlay shared.OverlayUnionParam `json:"overlay,omitzero"`
+ OverlayPosition shared.OverlayPositionParam `json:"overlayPosition,omitzero"`
+ OverlayTiming shared.OverlayTimingParam `json:"overlayTiming,omitzero"`
+ // Resulting set of attributes suitable for an HTML `
` element. Useful for
+ // enabling responsive image loading with `srcSet` and `sizes`.
+ ResponsiveImageAttributes shared.ResponsiveImageAttributesParam `json:"responsiveImageAttributes,omitzero"`
+ SolidColorOverlay shared.SolidColorOverlayParam `json:"solidColorOverlay,omitzero"`
+ SolidColorOverlayTransformation shared.SolidColorOverlayTransformationParam `json:"solidColorOverlayTransformation,omitzero"`
+ // Options for generating ImageKit URLs with transformations. See the
+ // [Transformations guide](https://imagekit.io/docs/transformations).
+ SrcOptions shared.SrcOptionsParam `json:"srcOptions,omitzero"`
+ // Available streaming resolutions for
+ // [adaptive bitrate streaming](https://imagekit.io/docs/adaptive-bitrate-streaming)
+ //
+ // Any of "240", "360", "480", "720", "1080", "1440", "2160".
+ StreamingResolution shared.StreamingResolution `json:"streamingResolution,omitzero"`
+ SubtitleOverlay shared.SubtitleOverlayParam `json:"subtitleOverlay,omitzero"`
+ // Subtitle styling options.
+ // [Learn more](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
+ // from the docs.
+ SubtitleOverlayTransformation shared.SubtitleOverlayTransformationParam `json:"subtitleOverlayTransformation,omitzero"`
+ TextOverlay shared.TextOverlayParam `json:"textOverlay,omitzero"`
+ TextOverlayTransformation shared.TextOverlayTransformationParam `json:"textOverlayTransformation,omitzero"`
+ // The SDK provides easy-to-use names for transformations. These names are
+ // converted to the corresponding transformation string before being added to the
+ // URL. SDKs are updated regularly to support new transformations. If you want to
+ // use a transformation that is not supported by the SDK, You can use the `raw`
+ // parameter to pass the transformation string directly. See the
+ // [Transformations documentation](https://imagekit.io/docs/transformations).
+ Transformation shared.TransformationParam `json:"transformation,omitzero"`
+ // By default, the transformation string is added as a query parameter in the URL,
+ // e.g., `?tr=w-100,h-100`. If you want to add the transformation string in the
+ // path of the URL, set this to `path`. Learn more in the
+ // [Transformations guide](https://imagekit.io/docs/transformations).
+ //
+ // Any of "path", "query".
+ TransformationPosition shared.TransformationPosition `json:"transformationPosition,omitzero"`
+ VideoOverlay shared.VideoOverlayParam `json:"videoOverlay,omitzero"`
+ paramObj
+}
+
+func (r DummyNewParams) MarshalJSON() (data []byte, err error) {
+ type shadow DummyNewParams
+ return param.MarshalObject(r, (*shadow)(&r))
+}
+func (r *DummyNewParams) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
+}
diff --git a/dummy_test.go b/dummy_test.go
new file mode 100644
index 0000000..96a9a1c
--- /dev/null
+++ b/dummy_test.go
@@ -0,0 +1,1152 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+package imagekit_test
+
+import (
+ "context"
+ "errors"
+ "os"
+ "testing"
+
+ "github.com/imagekit-developer/imagekit-go/v2"
+ "github.com/imagekit-developer/imagekit-go/v2/internal/testutil"
+ "github.com/imagekit-developer/imagekit-go/v2/option"
+ "github.com/imagekit-developer/imagekit-go/v2/shared"
+)
+
+func TestDummyNewWithOptionalParams(t *testing.T) {
+ t.Skip("Prism tests are disabled")
+ baseURL := "http://localhost:4010"
+ if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
+ baseURL = envURL
+ }
+ if !testutil.CheckTestServer(t, baseURL) {
+ return
+ }
+ client := imagekit.NewClient(
+ option.WithBaseURL(baseURL),
+ option.WithPrivateKey("My Private Key"),
+ option.WithPassword("My Password"),
+ )
+ err := client.Dummy.New(context.TODO(), imagekit.DummyNewParams{
+ BaseOverlay: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Extensions: shared.ExtensionsParam{shared.ExtensionUnionParam{
+ OfRemoveBg: &shared.ExtensionRemoveBgParam{
+ Options: shared.ExtensionRemoveBgOptionsParam{
+ AddShadow: imagekit.Bool(true),
+ BgColor: imagekit.String("bg_color"),
+ BgImageURL: imagekit.String("bg_image_url"),
+ Semitransparency: imagekit.Bool(true),
+ },
+ },
+ }, shared.ExtensionUnionParam{
+ OfAutoTagging: &shared.ExtensionAutoTaggingParam{
+ MaxTags: 5,
+ MinConfidence: 95,
+ Name: "google-auto-tagging",
+ },
+ }, shared.ExtensionUnionParam{
+ OfAIAutoDescription: &shared.ExtensionAIAutoDescriptionParam{},
+ }},
+ GetImageAttributesOptions: shared.GetImageAttributesOptionsParam{
+ SrcOptionsParam: shared.SrcOptionsParam{
+ Src: "/my-image.jpg",
+ URLEndpoint: "https://ik.imagekit.io/demo",
+ ExpiresIn: imagekit.Float(0),
+ QueryParameters: map[string]string{
+ "foo": "string",
+ },
+ Signed: imagekit.Bool(true),
+ Transformation: []shared.TransformationParam{{
+ AIChangeBackground: imagekit.String("aiChangeBackground"),
+ AIDropShadow: shared.TransformationAIDropShadowUnionParam{
+ OfTransformationAIDropShadowBoolean: imagekit.Bool(true),
+ },
+ AIEdit: imagekit.String("aiEdit"),
+ AIRemoveBackground: true,
+ AIRemoveBackgroundExternal: true,
+ AIRetouch: true,
+ AIUpscale: true,
+ AIVariation: true,
+ AspectRatio: shared.TransformationAspectRatioUnionParam{
+ OfString: imagekit.String("4:3"),
+ },
+ AudioCodec: shared.TransformationAudioCodecAac,
+ Background: imagekit.String("red"),
+ Blur: imagekit.Float(10),
+ Border: imagekit.String("5_FF0000"),
+ ColorProfile: imagekit.Bool(true),
+ ContrastStretch: true,
+ Crop: shared.TransformationCropForce,
+ CropMode: shared.TransformationCropModePadResize,
+ DefaultImage: imagekit.String("defaultImage"),
+ Dpr: imagekit.Float(2),
+ Duration: shared.TransformationDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ EndOffset: shared.TransformationEndOffsetUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Flip: shared.TransformationFlipH,
+ Focus: imagekit.String("center"),
+ Format: shared.TransformationFormatAuto,
+ Gradient: shared.TransformationGradientUnionParam{
+ OfTransformationGradientBoolean: imagekit.Bool(true),
+ },
+ Grayscale: true,
+ Height: shared.TransformationHeightUnionParam{
+ OfFloat: imagekit.Float(200),
+ },
+ Lossless: imagekit.Bool(true),
+ Metadata: imagekit.Bool(true),
+ Named: imagekit.String("named"),
+ Opacity: imagekit.Float(0),
+ Original: imagekit.Bool(true),
+ Overlay: shared.OverlayUnionParam{
+ OfText: &shared.TextOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Text: "text",
+ Encoding: "auto",
+ Transformation: []shared.TextOverlayTransformationParam{{
+ Alpha: imagekit.Float(1),
+ Background: imagekit.String("background"),
+ Flip: shared.TextOverlayTransformationFlipH,
+ FontColor: imagekit.String("fontColor"),
+ FontFamily: imagekit.String("fontFamily"),
+ FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
+ LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Padding: shared.TextOverlayTransformationPaddingUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Radius: shared.TextOverlayTransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Rotation: shared.TextOverlayTransformationRotationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Typography: imagekit.String("typography"),
+ Width: shared.TextOverlayTransformationWidthUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ }},
+ },
+ },
+ Page: shared.TransformationPageUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Progressive: imagekit.Bool(true),
+ Quality: imagekit.Float(80),
+ Radius: shared.TransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(20),
+ },
+ Raw: imagekit.String("raw"),
+ Rotation: shared.TransformationRotationUnionParam{
+ OfFloat: imagekit.Float(90),
+ },
+ Shadow: shared.TransformationShadowUnionParam{
+ OfTransformationShadowBoolean: imagekit.Bool(true),
+ },
+ Sharpen: shared.TransformationSharpenUnionParam{
+ OfTransformationSharpenBoolean: imagekit.Bool(true),
+ },
+ StartOffset: shared.TransformationStartOffsetUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ StreamingResolutions: []shared.StreamingResolution{shared.StreamingResolution240},
+ Trim: shared.TransformationTrimUnionParam{
+ OfTransformationTrimBoolean: imagekit.Bool(true),
+ },
+ UnsharpMask: shared.TransformationUnsharpMaskUnionParam{
+ OfTransformationUnsharpMaskBoolean: imagekit.Bool(true),
+ },
+ VideoCodec: shared.TransformationVideoCodecH264,
+ Width: shared.TransformationWidthUnionParam{
+ OfFloat: imagekit.Float(300),
+ },
+ X: shared.TransformationXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ XCenter: shared.TransformationXCenterUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.TransformationYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ YCenter: shared.TransformationYCenterUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Zoom: imagekit.Float(0),
+ }},
+ TransformationPosition: shared.TransformationPositionPath,
+ },
+ DeviceBreakpoints: []float64{640, 750, 828, 1080, 1200, 1920, 2048, 3840},
+ ImageBreakpoints: []float64{16, 32, 48, 64, 96, 128, 256, 384},
+ Sizes: imagekit.String("(min-width: 768px) 50vw, 100vw"),
+ Width: imagekit.Float(400),
+ },
+ ImageOverlay: shared.ImageOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Input: "input",
+ Encoding: "auto",
+ Transformation: []shared.TransformationParam{{
+ AIChangeBackground: imagekit.String("aiChangeBackground"),
+ AIDropShadow: shared.TransformationAIDropShadowUnionParam{
+ OfTransformationAIDropShadowBoolean: imagekit.Bool(true),
+ },
+ AIEdit: imagekit.String("aiEdit"),
+ AIRemoveBackground: true,
+ AIRemoveBackgroundExternal: true,
+ AIRetouch: true,
+ AIUpscale: true,
+ AIVariation: true,
+ AspectRatio: shared.TransformationAspectRatioUnionParam{
+ OfString: imagekit.String("4:3"),
+ },
+ AudioCodec: shared.TransformationAudioCodecAac,
+ Background: imagekit.String("red"),
+ Blur: imagekit.Float(10),
+ Border: imagekit.String("5_FF0000"),
+ ColorProfile: imagekit.Bool(true),
+ ContrastStretch: true,
+ Crop: shared.TransformationCropForce,
+ CropMode: shared.TransformationCropModePadResize,
+ DefaultImage: imagekit.String("defaultImage"),
+ Dpr: imagekit.Float(2),
+ Duration: shared.TransformationDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ EndOffset: shared.TransformationEndOffsetUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Flip: shared.TransformationFlipH,
+ Focus: imagekit.String("center"),
+ Format: shared.TransformationFormatAuto,
+ Gradient: shared.TransformationGradientUnionParam{
+ OfTransformationGradientBoolean: imagekit.Bool(true),
+ },
+ Grayscale: true,
+ Height: shared.TransformationHeightUnionParam{
+ OfFloat: imagekit.Float(200),
+ },
+ Lossless: imagekit.Bool(true),
+ Metadata: imagekit.Bool(true),
+ Named: imagekit.String("named"),
+ Opacity: imagekit.Float(0),
+ Original: imagekit.Bool(true),
+ Overlay: shared.OverlayUnionParam{
+ OfText: &shared.TextOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Text: "text",
+ Encoding: "auto",
+ Transformation: []shared.TextOverlayTransformationParam{{
+ Alpha: imagekit.Float(1),
+ Background: imagekit.String("background"),
+ Flip: shared.TextOverlayTransformationFlipH,
+ FontColor: imagekit.String("fontColor"),
+ FontFamily: imagekit.String("fontFamily"),
+ FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
+ LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Padding: shared.TextOverlayTransformationPaddingUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Radius: shared.TextOverlayTransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Rotation: shared.TextOverlayTransformationRotationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Typography: imagekit.String("typography"),
+ Width: shared.TextOverlayTransformationWidthUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ }},
+ },
+ },
+ Page: shared.TransformationPageUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Progressive: imagekit.Bool(true),
+ Quality: imagekit.Float(80),
+ Radius: shared.TransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(20),
+ },
+ Raw: imagekit.String("raw"),
+ Rotation: shared.TransformationRotationUnionParam{
+ OfFloat: imagekit.Float(90),
+ },
+ Shadow: shared.TransformationShadowUnionParam{
+ OfTransformationShadowBoolean: imagekit.Bool(true),
+ },
+ Sharpen: shared.TransformationSharpenUnionParam{
+ OfTransformationSharpenBoolean: imagekit.Bool(true),
+ },
+ StartOffset: shared.TransformationStartOffsetUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ StreamingResolutions: []shared.StreamingResolution{shared.StreamingResolution240},
+ Trim: shared.TransformationTrimUnionParam{
+ OfTransformationTrimBoolean: imagekit.Bool(true),
+ },
+ UnsharpMask: shared.TransformationUnsharpMaskUnionParam{
+ OfTransformationUnsharpMaskBoolean: imagekit.Bool(true),
+ },
+ VideoCodec: shared.TransformationVideoCodecH264,
+ Width: shared.TransformationWidthUnionParam{
+ OfFloat: imagekit.Float(300),
+ },
+ X: shared.TransformationXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ XCenter: shared.TransformationXCenterUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.TransformationYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ YCenter: shared.TransformationYCenterUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Zoom: imagekit.Float(0),
+ }},
+ },
+ Overlay: shared.OverlayUnionParam{
+ OfText: &shared.TextOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Text: "text",
+ Encoding: "auto",
+ Transformation: []shared.TextOverlayTransformationParam{{
+ Alpha: imagekit.Float(1),
+ Background: imagekit.String("background"),
+ Flip: shared.TextOverlayTransformationFlipH,
+ FontColor: imagekit.String("fontColor"),
+ FontFamily: imagekit.String("fontFamily"),
+ FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
+ LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Padding: shared.TextOverlayTransformationPaddingUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Radius: shared.TextOverlayTransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Rotation: shared.TextOverlayTransformationRotationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Typography: imagekit.String("typography"),
+ Width: shared.TextOverlayTransformationWidthUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ }},
+ },
+ },
+ OverlayPosition: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ OverlayTiming: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ ResponsiveImageAttributes: shared.ResponsiveImageAttributesParam{
+ Src: "https://ik.imagekit.io/demo/image.jpg?tr=w-3840",
+ Sizes: imagekit.String("100vw"),
+ SrcSet: imagekit.String("https://ik.imagekit.io/demo/image.jpg?tr=w-640 640w, https://ik.imagekit.io/demo/image.jpg?tr=w-1080 1080w, https://ik.imagekit.io/demo/image.jpg?tr=w-1920 1920w"),
+ Width: imagekit.Float(400),
+ },
+ SolidColorOverlay: shared.SolidColorOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Color: "color",
+ Transformation: []shared.SolidColorOverlayTransformationParam{{
+ Alpha: imagekit.Float(1),
+ Background: imagekit.String("background"),
+ Gradient: shared.SolidColorOverlayTransformationGradientUnionParam{
+ OfSolidColorOverlayTransformationGradientBoolean: imagekit.Bool(true),
+ },
+ Height: shared.SolidColorOverlayTransformationHeightUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Radius: shared.SolidColorOverlayTransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Width: shared.SolidColorOverlayTransformationWidthUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ }},
+ },
+ SolidColorOverlayTransformation: shared.SolidColorOverlayTransformationParam{
+ Alpha: imagekit.Float(1),
+ Background: imagekit.String("background"),
+ Gradient: shared.SolidColorOverlayTransformationGradientUnionParam{
+ OfSolidColorOverlayTransformationGradientBoolean: imagekit.Bool(true),
+ },
+ Height: shared.SolidColorOverlayTransformationHeightUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Radius: shared.SolidColorOverlayTransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Width: shared.SolidColorOverlayTransformationWidthUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ SrcOptions: shared.SrcOptionsParam{
+ Src: "/my-image.jpg",
+ URLEndpoint: "https://ik.imagekit.io/demo",
+ ExpiresIn: imagekit.Float(0),
+ QueryParameters: map[string]string{
+ "foo": "string",
+ },
+ Signed: imagekit.Bool(true),
+ Transformation: []shared.TransformationParam{{
+ AIChangeBackground: imagekit.String("aiChangeBackground"),
+ AIDropShadow: shared.TransformationAIDropShadowUnionParam{
+ OfTransformationAIDropShadowBoolean: imagekit.Bool(true),
+ },
+ AIEdit: imagekit.String("aiEdit"),
+ AIRemoveBackground: true,
+ AIRemoveBackgroundExternal: true,
+ AIRetouch: true,
+ AIUpscale: true,
+ AIVariation: true,
+ AspectRatio: shared.TransformationAspectRatioUnionParam{
+ OfString: imagekit.String("4:3"),
+ },
+ AudioCodec: shared.TransformationAudioCodecAac,
+ Background: imagekit.String("red"),
+ Blur: imagekit.Float(10),
+ Border: imagekit.String("5_FF0000"),
+ ColorProfile: imagekit.Bool(true),
+ ContrastStretch: true,
+ Crop: shared.TransformationCropForce,
+ CropMode: shared.TransformationCropModePadResize,
+ DefaultImage: imagekit.String("defaultImage"),
+ Dpr: imagekit.Float(2),
+ Duration: shared.TransformationDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ EndOffset: shared.TransformationEndOffsetUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Flip: shared.TransformationFlipH,
+ Focus: imagekit.String("center"),
+ Format: shared.TransformationFormatAuto,
+ Gradient: shared.TransformationGradientUnionParam{
+ OfTransformationGradientBoolean: imagekit.Bool(true),
+ },
+ Grayscale: true,
+ Height: shared.TransformationHeightUnionParam{
+ OfFloat: imagekit.Float(200),
+ },
+ Lossless: imagekit.Bool(true),
+ Metadata: imagekit.Bool(true),
+ Named: imagekit.String("named"),
+ Opacity: imagekit.Float(0),
+ Original: imagekit.Bool(true),
+ Overlay: shared.OverlayUnionParam{
+ OfText: &shared.TextOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Text: "text",
+ Encoding: "auto",
+ Transformation: []shared.TextOverlayTransformationParam{{
+ Alpha: imagekit.Float(1),
+ Background: imagekit.String("background"),
+ Flip: shared.TextOverlayTransformationFlipH,
+ FontColor: imagekit.String("fontColor"),
+ FontFamily: imagekit.String("fontFamily"),
+ FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
+ LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Padding: shared.TextOverlayTransformationPaddingUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Radius: shared.TextOverlayTransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Rotation: shared.TextOverlayTransformationRotationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Typography: imagekit.String("typography"),
+ Width: shared.TextOverlayTransformationWidthUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ }},
+ },
+ },
+ Page: shared.TransformationPageUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Progressive: imagekit.Bool(true),
+ Quality: imagekit.Float(80),
+ Radius: shared.TransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(20),
+ },
+ Raw: imagekit.String("raw"),
+ Rotation: shared.TransformationRotationUnionParam{
+ OfFloat: imagekit.Float(90),
+ },
+ Shadow: shared.TransformationShadowUnionParam{
+ OfTransformationShadowBoolean: imagekit.Bool(true),
+ },
+ Sharpen: shared.TransformationSharpenUnionParam{
+ OfTransformationSharpenBoolean: imagekit.Bool(true),
+ },
+ StartOffset: shared.TransformationStartOffsetUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ StreamingResolutions: []shared.StreamingResolution{shared.StreamingResolution240},
+ Trim: shared.TransformationTrimUnionParam{
+ OfTransformationTrimBoolean: imagekit.Bool(true),
+ },
+ UnsharpMask: shared.TransformationUnsharpMaskUnionParam{
+ OfTransformationUnsharpMaskBoolean: imagekit.Bool(true),
+ },
+ VideoCodec: shared.TransformationVideoCodecH264,
+ Width: shared.TransformationWidthUnionParam{
+ OfFloat: imagekit.Float(300),
+ },
+ X: shared.TransformationXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ XCenter: shared.TransformationXCenterUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.TransformationYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ YCenter: shared.TransformationYCenterUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Zoom: imagekit.Float(0),
+ }},
+ TransformationPosition: shared.TransformationPositionPath,
+ },
+ StreamingResolution: shared.StreamingResolution240,
+ SubtitleOverlay: shared.SubtitleOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Input: "input",
+ Encoding: "auto",
+ Transformation: []shared.SubtitleOverlayTransformationParam{{
+ Background: imagekit.String("background"),
+ Color: imagekit.String("color"),
+ FontFamily: imagekit.String("fontFamily"),
+ FontOutline: imagekit.String("fontOutline"),
+ FontShadow: imagekit.String("fontShadow"),
+ FontSize: imagekit.Float(0),
+ Typography: shared.SubtitleOverlayTransformationTypographyB,
+ }},
+ },
+ SubtitleOverlayTransformation: shared.SubtitleOverlayTransformationParam{
+ Background: imagekit.String("background"),
+ Color: imagekit.String("color"),
+ FontFamily: imagekit.String("fontFamily"),
+ FontOutline: imagekit.String("fontOutline"),
+ FontShadow: imagekit.String("fontShadow"),
+ FontSize: imagekit.Float(0),
+ Typography: shared.SubtitleOverlayTransformationTypographyB,
+ },
+ TextOverlay: shared.TextOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Text: "text",
+ Encoding: "auto",
+ Transformation: []shared.TextOverlayTransformationParam{{
+ Alpha: imagekit.Float(1),
+ Background: imagekit.String("background"),
+ Flip: shared.TextOverlayTransformationFlipH,
+ FontColor: imagekit.String("fontColor"),
+ FontFamily: imagekit.String("fontFamily"),
+ FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
+ LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Padding: shared.TextOverlayTransformationPaddingUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Radius: shared.TextOverlayTransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Rotation: shared.TextOverlayTransformationRotationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Typography: imagekit.String("typography"),
+ Width: shared.TextOverlayTransformationWidthUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ }},
+ },
+ TextOverlayTransformation: shared.TextOverlayTransformationParam{
+ Alpha: imagekit.Float(1),
+ Background: imagekit.String("background"),
+ Flip: shared.TextOverlayTransformationFlipH,
+ FontColor: imagekit.String("fontColor"),
+ FontFamily: imagekit.String("fontFamily"),
+ FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
+ LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Padding: shared.TextOverlayTransformationPaddingUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Radius: shared.TextOverlayTransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Rotation: shared.TextOverlayTransformationRotationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Typography: imagekit.String("typography"),
+ Width: shared.TextOverlayTransformationWidthUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Transformation: shared.TransformationParam{
+ AIChangeBackground: imagekit.String("aiChangeBackground"),
+ AIDropShadow: shared.TransformationAIDropShadowUnionParam{
+ OfTransformationAIDropShadowBoolean: imagekit.Bool(true),
+ },
+ AIEdit: imagekit.String("aiEdit"),
+ AIRemoveBackground: true,
+ AIRemoveBackgroundExternal: true,
+ AIRetouch: true,
+ AIUpscale: true,
+ AIVariation: true,
+ AspectRatio: shared.TransformationAspectRatioUnionParam{
+ OfString: imagekit.String("4:3"),
+ },
+ AudioCodec: shared.TransformationAudioCodecAac,
+ Background: imagekit.String("red"),
+ Blur: imagekit.Float(10),
+ Border: imagekit.String("5_FF0000"),
+ ColorProfile: imagekit.Bool(true),
+ ContrastStretch: true,
+ Crop: shared.TransformationCropForce,
+ CropMode: shared.TransformationCropModePadResize,
+ DefaultImage: imagekit.String("defaultImage"),
+ Dpr: imagekit.Float(2),
+ Duration: shared.TransformationDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ EndOffset: shared.TransformationEndOffsetUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Flip: shared.TransformationFlipH,
+ Focus: imagekit.String("center"),
+ Format: shared.TransformationFormatAuto,
+ Gradient: shared.TransformationGradientUnionParam{
+ OfTransformationGradientBoolean: imagekit.Bool(true),
+ },
+ Grayscale: true,
+ Height: shared.TransformationHeightUnionParam{
+ OfFloat: imagekit.Float(200),
+ },
+ Lossless: imagekit.Bool(true),
+ Metadata: imagekit.Bool(true),
+ Named: imagekit.String("named"),
+ Opacity: imagekit.Float(0),
+ Original: imagekit.Bool(true),
+ Overlay: shared.OverlayUnionParam{
+ OfText: &shared.TextOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Text: "text",
+ Encoding: "auto",
+ Transformation: []shared.TextOverlayTransformationParam{{
+ Alpha: imagekit.Float(1),
+ Background: imagekit.String("background"),
+ Flip: shared.TextOverlayTransformationFlipH,
+ FontColor: imagekit.String("fontColor"),
+ FontFamily: imagekit.String("fontFamily"),
+ FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
+ LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Padding: shared.TextOverlayTransformationPaddingUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Radius: shared.TextOverlayTransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Rotation: shared.TextOverlayTransformationRotationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Typography: imagekit.String("typography"),
+ Width: shared.TextOverlayTransformationWidthUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ }},
+ },
+ },
+ Page: shared.TransformationPageUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Progressive: imagekit.Bool(true),
+ Quality: imagekit.Float(80),
+ Radius: shared.TransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(20),
+ },
+ Raw: imagekit.String("raw"),
+ Rotation: shared.TransformationRotationUnionParam{
+ OfFloat: imagekit.Float(90),
+ },
+ Shadow: shared.TransformationShadowUnionParam{
+ OfTransformationShadowBoolean: imagekit.Bool(true),
+ },
+ Sharpen: shared.TransformationSharpenUnionParam{
+ OfTransformationSharpenBoolean: imagekit.Bool(true),
+ },
+ StartOffset: shared.TransformationStartOffsetUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ StreamingResolutions: []shared.StreamingResolution{shared.StreamingResolution240},
+ Trim: shared.TransformationTrimUnionParam{
+ OfTransformationTrimBoolean: imagekit.Bool(true),
+ },
+ UnsharpMask: shared.TransformationUnsharpMaskUnionParam{
+ OfTransformationUnsharpMaskBoolean: imagekit.Bool(true),
+ },
+ VideoCodec: shared.TransformationVideoCodecH264,
+ Width: shared.TransformationWidthUnionParam{
+ OfFloat: imagekit.Float(300),
+ },
+ X: shared.TransformationXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ XCenter: shared.TransformationXCenterUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.TransformationYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ YCenter: shared.TransformationYCenterUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Zoom: imagekit.Float(0),
+ },
+ TransformationPosition: shared.TransformationPositionPath,
+ VideoOverlay: shared.VideoOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Input: "input",
+ Encoding: "auto",
+ Transformation: []shared.TransformationParam{{
+ AIChangeBackground: imagekit.String("aiChangeBackground"),
+ AIDropShadow: shared.TransformationAIDropShadowUnionParam{
+ OfTransformationAIDropShadowBoolean: imagekit.Bool(true),
+ },
+ AIEdit: imagekit.String("aiEdit"),
+ AIRemoveBackground: true,
+ AIRemoveBackgroundExternal: true,
+ AIRetouch: true,
+ AIUpscale: true,
+ AIVariation: true,
+ AspectRatio: shared.TransformationAspectRatioUnionParam{
+ OfString: imagekit.String("4:3"),
+ },
+ AudioCodec: shared.TransformationAudioCodecAac,
+ Background: imagekit.String("red"),
+ Blur: imagekit.Float(10),
+ Border: imagekit.String("5_FF0000"),
+ ColorProfile: imagekit.Bool(true),
+ ContrastStretch: true,
+ Crop: shared.TransformationCropForce,
+ CropMode: shared.TransformationCropModePadResize,
+ DefaultImage: imagekit.String("defaultImage"),
+ Dpr: imagekit.Float(2),
+ Duration: shared.TransformationDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ EndOffset: shared.TransformationEndOffsetUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Flip: shared.TransformationFlipH,
+ Focus: imagekit.String("center"),
+ Format: shared.TransformationFormatAuto,
+ Gradient: shared.TransformationGradientUnionParam{
+ OfTransformationGradientBoolean: imagekit.Bool(true),
+ },
+ Grayscale: true,
+ Height: shared.TransformationHeightUnionParam{
+ OfFloat: imagekit.Float(200),
+ },
+ Lossless: imagekit.Bool(true),
+ Metadata: imagekit.Bool(true),
+ Named: imagekit.String("named"),
+ Opacity: imagekit.Float(0),
+ Original: imagekit.Bool(true),
+ Overlay: shared.OverlayUnionParam{
+ OfText: &shared.TextOverlayParam{
+ BaseOverlayParam: shared.BaseOverlayParam{
+ Position: shared.OverlayPositionParam{
+ Focus: shared.OverlayPositionFocusCenter,
+ X: shared.OverlayPositionXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.OverlayPositionYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ Timing: shared.OverlayTimingParam{
+ Duration: shared.OverlayTimingDurationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ End: shared.OverlayTimingEndUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Start: shared.OverlayTimingStartUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ },
+ },
+ Text: "text",
+ Encoding: "auto",
+ Transformation: []shared.TextOverlayTransformationParam{{
+ Alpha: imagekit.Float(1),
+ Background: imagekit.String("background"),
+ Flip: shared.TextOverlayTransformationFlipH,
+ FontColor: imagekit.String("fontColor"),
+ FontFamily: imagekit.String("fontFamily"),
+ FontSize: shared.TextOverlayTransformationFontSizeUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ InnerAlignment: shared.TextOverlayTransformationInnerAlignmentLeft,
+ LineHeight: shared.TextOverlayTransformationLineHeightUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Padding: shared.TextOverlayTransformationPaddingUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Radius: shared.TextOverlayTransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Rotation: shared.TextOverlayTransformationRotationUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Typography: imagekit.String("typography"),
+ Width: shared.TextOverlayTransformationWidthUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ }},
+ },
+ },
+ Page: shared.TransformationPageUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Progressive: imagekit.Bool(true),
+ Quality: imagekit.Float(80),
+ Radius: shared.TransformationRadiusUnionParam{
+ OfFloat: imagekit.Float(20),
+ },
+ Raw: imagekit.String("raw"),
+ Rotation: shared.TransformationRotationUnionParam{
+ OfFloat: imagekit.Float(90),
+ },
+ Shadow: shared.TransformationShadowUnionParam{
+ OfTransformationShadowBoolean: imagekit.Bool(true),
+ },
+ Sharpen: shared.TransformationSharpenUnionParam{
+ OfTransformationSharpenBoolean: imagekit.Bool(true),
+ },
+ StartOffset: shared.TransformationStartOffsetUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ StreamingResolutions: []shared.StreamingResolution{shared.StreamingResolution240},
+ Trim: shared.TransformationTrimUnionParam{
+ OfTransformationTrimBoolean: imagekit.Bool(true),
+ },
+ UnsharpMask: shared.TransformationUnsharpMaskUnionParam{
+ OfTransformationUnsharpMaskBoolean: imagekit.Bool(true),
+ },
+ VideoCodec: shared.TransformationVideoCodecH264,
+ Width: shared.TransformationWidthUnionParam{
+ OfFloat: imagekit.Float(300),
+ },
+ X: shared.TransformationXUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ XCenter: shared.TransformationXCenterUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Y: shared.TransformationYUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ YCenter: shared.TransformationYCenterUnionParam{
+ OfFloat: imagekit.Float(0),
+ },
+ Zoom: imagekit.Float(0),
+ }},
+ },
+ })
+ if err != nil {
+ var apierr *imagekit.Error
+ if errors.As(err, &apierr) {
+ t.Log(string(apierr.DumpRequest(true)))
+ }
+ t.Fatalf("err should be nil: %s", err.Error())
+ }
+}
diff --git a/shared/shared.go b/shared/shared.go
index a598bfe..a85359a 100644
--- a/shared/shared.go
+++ b/shared/shared.go
@@ -3,11 +3,8 @@
package shared
import (
- "encoding/json"
-
"github.com/imagekit-developer/imagekit-go/v2/internal/apijson"
"github.com/imagekit-developer/imagekit-go/v2/packages/param"
- "github.com/imagekit-developer/imagekit-go/v2/packages/respjson"
"github.com/imagekit-developer/imagekit-go/v2/shared/constant"
)
@@ -17,161 +14,17 @@ type paramUnion = param.APIUnion
// aliased to make [param.APIObject] private when embedding
type paramObj = param.APIObject
-type BaseOverlay struct {
- Position OverlayPosition `json:"position"`
- Timing OverlayTiming `json:"timing"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Position respjson.Field
- Timing respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r BaseOverlay) RawJSON() string { return r.JSON.raw }
-func (r *BaseOverlay) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
-}
-
-type Extensions []ExtensionUnion
-
-// ExtensionUnion contains all possible properties and values from
-// [ExtensionRemoveBg], [ExtensionAutoTagging], [ExtensionAIAutoDescription].
-//
-// Use the [ExtensionUnion.AsAny] method to switch on the variant.
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
-type ExtensionUnion struct {
- // Any of "remove-bg", nil, "ai-auto-description".
- Name string `json:"name"`
- // This field is from variant [ExtensionRemoveBg].
- Options ExtensionRemoveBgOptions `json:"options"`
- // This field is from variant [ExtensionAutoTagging].
- MaxTags int64 `json:"maxTags"`
- // This field is from variant [ExtensionAutoTagging].
- MinConfidence int64 `json:"minConfidence"`
- JSON struct {
- Name respjson.Field
- Options respjson.Field
- MaxTags respjson.Field
- MinConfidence respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u ExtensionUnion) AsRemoveBg() (v ExtensionRemoveBg) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
-}
-
-func (u ExtensionUnion) AsAutoTagging() (v ExtensionAutoTagging) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
-}
-
-func (u ExtensionUnion) AsAIAutoDescription() (v ExtensionAIAutoDescription) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
-}
-
-// Returns the unmodified JSON received from the API
-func (u ExtensionUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *ExtensionUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
-}
-
-type ExtensionRemoveBg struct {
- // Specifies the background removal extension.
- Name constant.RemoveBg `json:"name,required"`
- Options ExtensionRemoveBgOptions `json:"options"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Name respjson.Field
- Options respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r ExtensionRemoveBg) RawJSON() string { return r.JSON.raw }
-func (r *ExtensionRemoveBg) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
-}
-
-type ExtensionRemoveBgOptions struct {
- // Whether to add an artificial shadow to the result. Default is false. Note:
- // Adding shadows is currently only supported for car photos.
- AddShadow bool `json:"add_shadow"`
- // Specifies a solid color background using hex code (e.g., "81d4fa", "fff") or
- // color name (e.g., "green"). If this parameter is set, `bg_image_url` must be
- // empty.
- BgColor string `json:"bg_color"`
- // Sets a background image from a URL. If this parameter is set, `bg_color` must be
- // empty.
- BgImageURL string `json:"bg_image_url"`
- // Allows semi-transparent regions in the result. Default is true. Note:
- // Semitransparency is currently only supported for car windows.
- Semitransparency bool `json:"semitransparency"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- AddShadow respjson.Field
- BgColor respjson.Field
- BgImageURL respjson.Field
- Semitransparency respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r ExtensionRemoveBgOptions) RawJSON() string { return r.JSON.raw }
-func (r *ExtensionRemoveBgOptions) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
-}
-
-type ExtensionAutoTagging struct {
- // Maximum number of tags to attach to the asset.
- MaxTags int64 `json:"maxTags,required"`
- // Minimum confidence level for tags to be considered valid.
- MinConfidence int64 `json:"minConfidence,required"`
- // Specifies the auto-tagging extension used.
- //
- // Any of "google-auto-tagging", "aws-auto-tagging".
- Name string `json:"name,required"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- MaxTags respjson.Field
- MinConfidence respjson.Field
- Name respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r ExtensionAutoTagging) RawJSON() string { return r.JSON.raw }
-func (r *ExtensionAutoTagging) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+type BaseOverlayParam struct {
+ Position OverlayPositionParam `json:"position,omitzero"`
+ Timing OverlayTimingParam `json:"timing,omitzero"`
+ paramObj
}
-type ExtensionAIAutoDescription struct {
- // Specifies the auto description extension.
- Name constant.AIAutoDescription `json:"name,required"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Name respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
+func (r BaseOverlayParam) MarshalJSON() (data []byte, err error) {
+ type shadow BaseOverlayParam
+ return param.MarshalObject(r, (*shadow)(&r))
}
-
-// Returns the unmodified JSON received from the API
-func (r ExtensionAIAutoDescription) RawJSON() string { return r.JSON.raw }
-func (r *ExtensionAIAutoDescription) UnmarshalJSON(data []byte) error {
+func (r *BaseOverlayParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
@@ -346,19 +199,19 @@ func (r *ExtensionAIAutoDescriptionParam) UnmarshalJSON(data []byte) error {
// Options for generating responsive image attributes including `src`, `srcSet`,
// and `sizes` for HTML `
` elements. This schema extends `SrcOptions` to add
// support for responsive image generation with breakpoints.
-type GetImageAttributesOptions struct {
+type GetImageAttributesOptionsParam struct {
// Custom list of **device-width breakpoints** in pixels. These define common
// screen widths for responsive image generation.
//
// Defaults to `[640, 750, 828, 1080, 1200, 1920, 2048, 3840]`. Sorted
// automatically.
- DeviceBreakpoints []float64 `json:"deviceBreakpoints"`
+ DeviceBreakpoints []float64 `json:"deviceBreakpoints,omitzero"`
// Custom list of **image-specific breakpoints** in pixels. Useful for generating
// small variants (e.g., placeholders or thumbnails).
//
// Merged with `deviceBreakpoints` before calculating `srcSet`. Defaults to
// `[16, 32, 48, 64, 96, 128, 256, 384]`. Sorted automatically.
- ImageBreakpoints []float64 `json:"imageBreakpoints"`
+ ImageBreakpoints []float64 `json:"imageBreakpoints,omitzero"`
// The value for the HTML `sizes` attribute (e.g., `"100vw"` or
// `"(min-width:768px) 50vw, 100vw"`).
//
@@ -367,7 +220,7 @@ type GetImageAttributesOptions struct {
// - If it contains no `vw` units, the full breakpoint list is used.
//
// Enables a width-based strategy and generates `w` descriptors in `srcSet`.
- Sizes string `json:"sizes"`
+ Sizes param.Opt[string] `json:"sizes,omitzero"`
// The intended display width of the image in pixels, used **only when the `sizes`
// attribute is not provided**.
//
@@ -375,26 +228,16 @@ type GetImageAttributesOptions struct {
// in `srcSet`.
//
// Ignored if `sizes` is present.
- Width float64 `json:"width"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- DeviceBreakpoints respjson.Field
- ImageBreakpoints respjson.Field
- Sizes respjson.Field
- Width respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
- SrcOptions
-}
-
-// Returns the unmodified JSON received from the API
-func (r GetImageAttributesOptions) RawJSON() string { return r.JSON.raw }
-func (r *GetImageAttributesOptions) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+ Width param.Opt[float64] `json:"width,omitzero"`
+ SrcOptionsParam
+}
+
+func (r GetImageAttributesOptionsParam) MarshalJSON() (data []byte, err error) {
+ type shadow GetImageAttributesOptionsParam
+ return param.MarshalObject(r, (*shadow)(&r))
}
-type ImageOverlay struct {
+type ImageOverlayParam struct {
// Specifies the relative path to the image used as an overlay.
Input string `json:"input,required"`
Type constant.Image `json:"type,required"`
@@ -403,206 +246,252 @@ type ImageOverlay struct {
// format automatically. To always use base64 encoding (`ie-{base64}`), set this
// parameter to `base64`. To always use plain text (`i-{input}`), set it to
// `plain`.
- //
- // Any of "auto", "plain", "base64".
- Encoding string `json:"encoding"`
+ Encoding string `json:"encoding,omitzero"`
// Array of transformations to be applied to the overlay image. Supported
// transformations depends on the base/parent asset. See overlays on
// [Images](https://imagekit.io/docs/add-overlays-on-images#list-of-supported-image-transformations-in-image-layers)
// and
// [Videos](https://imagekit.io/docs/add-overlays-on-videos#list-of-transformations-supported-on-image-overlay).
- Transformation []Transformation `json:"transformation"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Input respjson.Field
- Type respjson.Field
- Encoding respjson.Field
- Transformation respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
- BaseOverlay
-}
-
-// Returns the unmodified JSON received from the API
-func (r ImageOverlay) RawJSON() string { return r.JSON.raw }
-func (r *ImageOverlay) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+ Transformation []TransformationParam `json:"transformation,omitzero"`
+ BaseOverlayParam
+}
+
+func (r ImageOverlayParam) MarshalJSON() (data []byte, err error) {
+ type shadow ImageOverlayParam
+ return param.MarshalObject(r, (*shadow)(&r))
}
-func (ImageOverlay) ImplOverlayUnion() {}
+func OverlayParamOfText(text string) OverlayUnionParam {
+ var variant TextOverlayParam
+ variant.Text = text
+ return OverlayUnionParam{OfText: &variant}
+}
-// OverlayUnion contains all possible properties and values from [TextOverlay],
-// [ImageOverlay], [VideoOverlay], [SubtitleOverlay], [SolidColorOverlay].
-//
-// Use the [OverlayUnion.AsAny] method to switch on the variant.
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
-type OverlayUnion struct {
- // This field is from variant [TextOverlay], [ImageOverlay], [VideoOverlay],
- // [SubtitleOverlay], [SolidColorOverlay].
- Position OverlayPosition `json:"position"`
- // This field is from variant [TextOverlay], [ImageOverlay], [VideoOverlay],
- // [SubtitleOverlay], [SolidColorOverlay].
- Timing OverlayTiming `json:"timing"`
- // This field is from variant [TextOverlay].
- Text string `json:"text"`
- // Any of "text", "image", "video", "subtitle", "solidColor".
- Type string `json:"type"`
- Encoding string `json:"encoding"`
- // This field is a union of [[]TextOverlayTransformation], [[]Transformation],
- // [[]Transformation], [[]SubtitleOverlayTransformation],
- // [[]SolidColorOverlayTransformation]
- Transformation OverlayUnionTransformation `json:"transformation"`
- Input string `json:"input"`
- // This field is from variant [SolidColorOverlay].
- Color string `json:"color"`
- JSON struct {
- Position respjson.Field
- Timing respjson.Field
- Text respjson.Field
- Type respjson.Field
- Encoding respjson.Field
- Transformation respjson.Field
- Input respjson.Field
- Color respjson.Field
- raw string
- } `json:"-"`
-}
-
-// anyOverlay is implemented by each variant of [OverlayUnion] to add type safety
-// for the return type of [OverlayUnion.AsAny]
-type anyOverlay interface {
- ImplOverlayUnion()
-}
-
-// Use the following switch statement to find the correct variant
+func OverlayParamOfImage(input string) OverlayUnionParam {
+ var image ImageOverlayParam
+ image.Input = input
+ return OverlayUnionParam{OfImage: &image}
+}
+
+func OverlayParamOfVideo(input string) OverlayUnionParam {
+ var video VideoOverlayParam
+ video.Input = input
+ return OverlayUnionParam{OfVideo: &video}
+}
+
+func OverlayParamOfSubtitle(input string) OverlayUnionParam {
+ var subtitle SubtitleOverlayParam
+ subtitle.Input = input
+ return OverlayUnionParam{OfSubtitle: &subtitle}
+}
+
+func OverlayParamOfSolidColor(color string) OverlayUnionParam {
+ var solidColor SolidColorOverlayParam
+ solidColor.Color = color
+ return OverlayUnionParam{OfSolidColor: &solidColor}
+}
+
+// Only one field can be non-zero.
//
-// switch variant := OverlayUnion.AsAny().(type) {
-// case shared.TextOverlay:
-// case shared.ImageOverlay:
-// case shared.VideoOverlay:
-// case shared.SubtitleOverlay:
-// case shared.SolidColorOverlay:
-// default:
-// fmt.Errorf("no variant present")
-// }
-func (u OverlayUnion) AsAny() anyOverlay {
- switch u.Type {
- case "text":
- return u.AsText()
- case "image":
- return u.AsImage()
- case "video":
- return u.AsVideo()
- case "subtitle":
- return u.AsSubtitle()
- case "solidColor":
- return u.AsSolidColor()
+// Use [param.IsOmitted] to confirm if a field is set.
+type OverlayUnionParam struct {
+ OfText *TextOverlayParam `json:",omitzero,inline"`
+ OfImage *ImageOverlayParam `json:",omitzero,inline"`
+ OfVideo *VideoOverlayParam `json:",omitzero,inline"`
+ OfSubtitle *SubtitleOverlayParam `json:",omitzero,inline"`
+ OfSolidColor *SolidColorOverlayParam `json:",omitzero,inline"`
+ paramUnion
+}
+
+func (u OverlayUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfText,
+ u.OfImage,
+ u.OfVideo,
+ u.OfSubtitle,
+ u.OfSolidColor)
+}
+func (u *OverlayUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
+}
+
+func (u *OverlayUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfText) {
+ return u.OfText
+ } else if !param.IsOmitted(u.OfImage) {
+ return u.OfImage
+ } else if !param.IsOmitted(u.OfVideo) {
+ return u.OfVideo
+ } else if !param.IsOmitted(u.OfSubtitle) {
+ return u.OfSubtitle
+ } else if !param.IsOmitted(u.OfSolidColor) {
+ return u.OfSolidColor
}
return nil
}
-func (u OverlayUnion) AsText() (v TextOverlay) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Returns a pointer to the underlying variant's property, if present.
+func (u OverlayUnionParam) GetText() *string {
+ if vt := u.OfText; vt != nil {
+ return &vt.Text
+ }
+ return nil
}
-func (u OverlayUnion) AsImage() (v ImageOverlay) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Returns a pointer to the underlying variant's property, if present.
+func (u OverlayUnionParam) GetColor() *string {
+ if vt := u.OfSolidColor; vt != nil {
+ return &vt.Color
+ }
+ return nil
}
-func (u OverlayUnion) AsVideo() (v VideoOverlay) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Returns a pointer to the underlying variant's property, if present.
+func (u OverlayUnionParam) GetType() *string {
+ if vt := u.OfText; vt != nil {
+ return (*string)(&vt.Type)
+ } else if vt := u.OfImage; vt != nil {
+ return (*string)(&vt.Type)
+ } else if vt := u.OfVideo; vt != nil {
+ return (*string)(&vt.Type)
+ } else if vt := u.OfSubtitle; vt != nil {
+ return (*string)(&vt.Type)
+ } else if vt := u.OfSolidColor; vt != nil {
+ return (*string)(&vt.Type)
+ }
+ return nil
}
-func (u OverlayUnion) AsSubtitle() (v SubtitleOverlay) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Returns a pointer to the underlying variant's property, if present.
+func (u OverlayUnionParam) GetEncoding() *string {
+ if vt := u.OfText; vt != nil {
+ return (*string)(&vt.Encoding)
+ } else if vt := u.OfImage; vt != nil {
+ return (*string)(&vt.Encoding)
+ } else if vt := u.OfVideo; vt != nil {
+ return (*string)(&vt.Encoding)
+ } else if vt := u.OfSubtitle; vt != nil {
+ return (*string)(&vt.Encoding)
+ }
+ return nil
}
-func (u OverlayUnion) AsSolidColor() (v SolidColorOverlay) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Returns a pointer to the underlying variant's property, if present.
+func (u OverlayUnionParam) GetInput() *string {
+ if vt := u.OfImage; vt != nil {
+ return (*string)(&vt.Input)
+ } else if vt := u.OfVideo; vt != nil {
+ return (*string)(&vt.Input)
+ } else if vt := u.OfSubtitle; vt != nil {
+ return (*string)(&vt.Input)
+ }
+ return nil
}
-// Returns the unmodified JSON received from the API
-func (u OverlayUnion) RawJSON() string { return u.JSON.raw }
+// Returns a pointer to the underlying variant's Position property, if present.
+func (u OverlayUnionParam) GetPosition() *OverlayPositionParam {
+ if vt := u.OfText; vt != nil {
+ return &vt.Position
+ } else if vt := u.OfImage; vt != nil {
+ return &vt.Position
+ } else if vt := u.OfVideo; vt != nil {
+ return &vt.Position
+ } else if vt := u.OfSubtitle; vt != nil {
+ return &vt.Position
+ } else if vt := u.OfSolidColor; vt != nil {
+ return &vt.Position
+ }
+ return nil
+}
-func (r *OverlayUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+// Returns a pointer to the underlying variant's Timing property, if present.
+func (u OverlayUnionParam) GetTiming() *OverlayTimingParam {
+ if vt := u.OfText; vt != nil {
+ return &vt.Timing
+ } else if vt := u.OfImage; vt != nil {
+ return &vt.Timing
+ } else if vt := u.OfVideo; vt != nil {
+ return &vt.Timing
+ } else if vt := u.OfSubtitle; vt != nil {
+ return &vt.Timing
+ } else if vt := u.OfSolidColor; vt != nil {
+ return &vt.Timing
+ }
+ return nil
}
-// OverlayUnionTransformation is an implicit subunion of [OverlayUnion].
-// OverlayUnionTransformation provides convenient access to the sub-properties of
-// the union.
-//
-// For type safety it is recommended to directly use a variant of the
-// [OverlayUnion].
+// Returns a subunion which exports methods to access subproperties
+//
+// Or use AsAny() to get the underlying value
+func (u OverlayUnionParam) GetTransformation() (res overlayUnionParamTransformation) {
+ if vt := u.OfText; vt != nil {
+ res.any = &vt.Transformation
+ } else if vt := u.OfImage; vt != nil {
+ res.any = &vt.Transformation
+ } else if vt := u.OfVideo; vt != nil {
+ res.any = &vt.Transformation
+ } else if vt := u.OfSubtitle; vt != nil {
+ res.any = &vt.Transformation
+ } else if vt := u.OfSolidColor; vt != nil {
+ res.any = &vt.Transformation
+ }
+ return
+}
+
+// Can have the runtime types [_[]TextOverlayTransformationParam],
+// [_[]TransformationParam], [_[]SubtitleOverlayTransformationParam],
+// [_[]SolidColorOverlayTransformationParam]
+type overlayUnionParamTransformation struct{ any }
+
+// Use the following switch statement to get the type of the union:
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfTextOverlayTransformationArray OfTransformationArray
-// OfSubtitleOverlayTransformationArray OfSolidColorOverlayTransformationArray]
-type OverlayUnionTransformation struct {
- // This field will be present if the value is a [[]TextOverlayTransformation]
- // instead of an object.
- OfTextOverlayTransformationArray []TextOverlayTransformation `json:",inline"`
- // This field will be present if the value is a [[]Transformation] instead of an
- // object.
- OfTransformationArray []Transformation `json:",inline"`
- // This field will be present if the value is a [[]SubtitleOverlayTransformation]
- // instead of an object.
- OfSubtitleOverlayTransformationArray []SubtitleOverlayTransformation `json:",inline"`
- // This field will be present if the value is a [[]SolidColorOverlayTransformation]
- // instead of an object.
- OfSolidColorOverlayTransformationArray []SolidColorOverlayTransformation `json:",inline"`
- JSON struct {
- OfTextOverlayTransformationArray respjson.Field
- OfTransformationArray respjson.Field
- OfSubtitleOverlayTransformationArray respjson.Field
- OfSolidColorOverlayTransformationArray respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (r *OverlayUnionTransformation) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+// switch u.AsAny().(type) {
+// case *[]shared.TextOverlayTransformationParam:
+// case *[]shared.TransformationParam:
+// case *[]shared.SubtitleOverlayTransformationParam:
+// case *[]shared.SolidColorOverlayTransformationParam:
+// default:
+// fmt.Errorf("not present")
+// }
+func (u overlayUnionParamTransformation) AsAny() any { return u.any }
+
+func init() {
+ apijson.RegisterUnion[OverlayUnionParam](
+ "type",
+ apijson.Discriminator[TextOverlayParam]("text"),
+ apijson.Discriminator[ImageOverlayParam]("image"),
+ apijson.Discriminator[VideoOverlayParam]("video"),
+ apijson.Discriminator[SubtitleOverlayParam]("subtitle"),
+ apijson.Discriminator[SolidColorOverlayParam]("solidColor"),
+ )
}
-type OverlayPosition struct {
+type OverlayPositionParam struct {
// Specifies the position of the overlay relative to the parent image or video.
// Maps to `lfo` in the URL.
//
// Any of "center", "top", "left", "bottom", "right", "top_left", "top_right",
// "bottom_left", "bottom_right".
- Focus OverlayPositionFocus `json:"focus"`
+ Focus OverlayPositionFocus `json:"focus,omitzero"`
// Specifies the x-coordinate of the top-left corner of the base asset where the
// overlay's top-left corner will be positioned. It also accepts arithmetic
// expressions such as `bw_mul_0.4` or `bw_sub_cw`. Maps to `lx` in the URL. Learn
// about
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
- X OverlayPositionXUnion `json:"x"`
+ X OverlayPositionXUnionParam `json:"x,omitzero"`
// Specifies the y-coordinate of the top-left corner of the base asset where the
// overlay's top-left corner will be positioned. It also accepts arithmetic
// expressions such as `bh_mul_0.4` or `bh_sub_ch`. Maps to `ly` in the URL. Learn
// about
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
- Y OverlayPositionYUnion `json:"y"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Focus respjson.Field
- X respjson.Field
- Y respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r OverlayPosition) RawJSON() string { return r.JSON.raw }
-func (r *OverlayPosition) UnmarshalJSON(data []byte) error {
+ Y OverlayPositionYUnionParam `json:"y,omitzero"`
+ paramObj
+}
+
+func (r OverlayPositionParam) MarshalJSON() (data []byte, err error) {
+ type shadow OverlayPositionParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
+func (r *OverlayPositionParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
@@ -622,250 +511,186 @@ const (
OverlayPositionFocusBottomRight OverlayPositionFocus = "bottom_right"
)
-// OverlayPositionXUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type OverlayPositionXUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u OverlayPositionXUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type OverlayPositionXUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u OverlayPositionXUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u OverlayPositionXUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *OverlayPositionXUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u OverlayPositionXUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *OverlayPositionXUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *OverlayPositionXUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// OverlayPositionYUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type OverlayPositionYUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u OverlayPositionYUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type OverlayPositionYUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u OverlayPositionYUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u OverlayPositionYUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *OverlayPositionYUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u OverlayPositionYUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *OverlayPositionYUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *OverlayPositionYUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-type OverlayTiming struct {
+type OverlayTimingParam struct {
// Specifies the duration (in seconds) during which the overlay should appear on
// the base video. Accepts a positive number up to two decimal places (e.g., `20`
// or `20.50`) and arithmetic expressions such as `bdu_mul_0.4` or `bdu_sub_idu`.
// Applies only if the base asset is a video. Maps to `ldu` in the URL.
- Duration OverlayTimingDurationUnion `json:"duration"`
+ Duration OverlayTimingDurationUnionParam `json:"duration,omitzero"`
// Specifies the end time (in seconds) for when the overlay should disappear from
// the base video. If both end and duration are provided, duration is ignored.
// Accepts a positive number up to two decimal places (e.g., `20` or `20.50`) and
// arithmetic expressions such as `bdu_mul_0.4` or `bdu_sub_idu`. Applies only if
// the base asset is a video. Maps to `leo` in the URL.
- End OverlayTimingEndUnion `json:"end"`
+ End OverlayTimingEndUnionParam `json:"end,omitzero"`
// Specifies the start time (in seconds) for when the overlay should appear on the
// base video. Accepts a positive number up to two decimal places (e.g., `20` or
// `20.50`) and arithmetic expressions such as `bdu_mul_0.4` or `bdu_sub_idu`.
// Applies only if the base asset is a video. Maps to `lso` in the URL.
- Start OverlayTimingStartUnion `json:"start"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Duration respjson.Field
- End respjson.Field
- Start respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r OverlayTiming) RawJSON() string { return r.JSON.raw }
-func (r *OverlayTiming) UnmarshalJSON(data []byte) error {
+ Start OverlayTimingStartUnionParam `json:"start,omitzero"`
+ paramObj
+}
+
+func (r OverlayTimingParam) MarshalJSON() (data []byte, err error) {
+ type shadow OverlayTimingParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
+func (r *OverlayTimingParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
-// OverlayTimingDurationUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type OverlayTimingDurationUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u OverlayTimingDurationUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type OverlayTimingDurationUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u OverlayTimingDurationUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u OverlayTimingDurationUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *OverlayTimingDurationUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u OverlayTimingDurationUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *OverlayTimingDurationUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *OverlayTimingDurationUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// OverlayTimingEndUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type OverlayTimingEndUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u OverlayTimingEndUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type OverlayTimingEndUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u OverlayTimingEndUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u OverlayTimingEndUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *OverlayTimingEndUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u OverlayTimingEndUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *OverlayTimingEndUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *OverlayTimingEndUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// OverlayTimingStartUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type OverlayTimingStartUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u OverlayTimingStartUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type OverlayTimingStartUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u OverlayTimingStartUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u OverlayTimingStartUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *OverlayTimingStartUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u OverlayTimingStartUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *OverlayTimingStartUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *OverlayTimingStartUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
// Resulting set of attributes suitable for an HTML `
` element. Useful for
// enabling responsive image loading with `srcSet` and `sizes`.
-type ResponsiveImageAttributes struct {
+//
+// The property Src is required.
+type ResponsiveImageAttributesParam struct {
// URL for the _largest_ candidate (assigned to plain `src`).
Src string `json:"src,required" format:"uri"`
// `sizes` returned (or synthesised as `100vw`). The value for the HTML `sizes`
// attribute.
- Sizes string `json:"sizes"`
+ Sizes param.Opt[string] `json:"sizes,omitzero"`
// Candidate set with `w` or `x` descriptors. Multiple image URLs separated by
// commas, each with a descriptor.
- SrcSet string `json:"srcSet"`
+ SrcSet param.Opt[string] `json:"srcSet,omitzero"`
// Width as a number (if `width` was provided in the input options).
- Width float64 `json:"width"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Src respjson.Field
- Sizes respjson.Field
- SrcSet respjson.Field
- Width respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r ResponsiveImageAttributes) RawJSON() string { return r.JSON.raw }
-func (r *ResponsiveImageAttributes) UnmarshalJSON(data []byte) error {
+ Width param.Opt[float64] `json:"width,omitzero"`
+ paramObj
+}
+
+func (r ResponsiveImageAttributesParam) MarshalJSON() (data []byte, err error) {
+ type shadow ResponsiveImageAttributesParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
+func (r *ResponsiveImageAttributesParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
-type SolidColorOverlay struct {
+type SolidColorOverlayParam struct {
// Specifies the color of the block using an RGB hex code (e.g., `FF0000`), an RGBA
// code (e.g., `FFAABB50`), or a color name (e.g., `red`). If an 8-character value
// is provided, the last two characters represent the opacity level (from `00` for
@@ -877,103 +702,74 @@ type SolidColorOverlay struct {
// [Images](https://imagekit.io/docs/add-overlays-on-images#apply-transformation-on-solid-color-overlay)
// and
// [Videos](https://imagekit.io/docs/add-overlays-on-videos#apply-transformations-on-solid-color-block-overlay).
- Transformation []SolidColorOverlayTransformation `json:"transformation"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Color respjson.Field
- Type respjson.Field
- Transformation respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
- BaseOverlay
-}
-
-// Returns the unmodified JSON received from the API
-func (r SolidColorOverlay) RawJSON() string { return r.JSON.raw }
-func (r *SolidColorOverlay) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+ Transformation []SolidColorOverlayTransformationParam `json:"transformation,omitzero"`
+ BaseOverlayParam
}
-func (SolidColorOverlay) ImplOverlayUnion() {}
+func (r SolidColorOverlayParam) MarshalJSON() (data []byte, err error) {
+ type shadow SolidColorOverlayParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
-type SolidColorOverlayTransformation struct {
+type SolidColorOverlayTransformationParam struct {
// Specifies the transparency level of the solid color overlay. Accepts integers
// from `1` to `9`.
- Alpha float64 `json:"alpha"`
+ Alpha param.Opt[float64] `json:"alpha,omitzero"`
// Specifies the background color of the solid color overlay. Accepts an RGB hex
// code (e.g., `FF0000`), an RGBA code (e.g., `FFAABB50`), or a color name.
- Background string `json:"background"`
+ Background param.Opt[string] `json:"background,omitzero"`
// Creates a linear gradient with two colors. Pass `true` for a default gradient,
// or provide a string for a custom gradient. Only works if the base asset is an
// image. See
// [gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
- Gradient SolidColorOverlayTransformationGradientUnion `json:"gradient"`
+ Gradient SolidColorOverlayTransformationGradientUnionParam `json:"gradient,omitzero"`
// Controls the height of the solid color overlay. Accepts a numeric value or an
// arithmetic expression. Learn about
// [arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
- Height SolidColorOverlayTransformationHeightUnion `json:"height"`
+ Height SolidColorOverlayTransformationHeightUnionParam `json:"height,omitzero"`
// Specifies the corner radius of the solid color overlay. Set to `max` for
// circular or oval shape. See
// [radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
- Radius SolidColorOverlayTransformationRadiusUnion `json:"radius"`
+ Radius SolidColorOverlayTransformationRadiusUnionParam `json:"radius,omitzero"`
// Controls the width of the solid color overlay. Accepts a numeric value or an
// arithmetic expression (e.g., `bw_mul_0.2` or `bh_div_2`). Learn about
// [arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
- Width SolidColorOverlayTransformationWidthUnion `json:"width"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Alpha respjson.Field
- Background respjson.Field
- Gradient respjson.Field
- Height respjson.Field
- Radius respjson.Field
- Width respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r SolidColorOverlayTransformation) RawJSON() string { return r.JSON.raw }
-func (r *SolidColorOverlayTransformation) UnmarshalJSON(data []byte) error {
+ Width SolidColorOverlayTransformationWidthUnionParam `json:"width,omitzero"`
+ paramObj
+}
+
+func (r SolidColorOverlayTransformationParam) MarshalJSON() (data []byte, err error) {
+ type shadow SolidColorOverlayTransformationParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
+func (r *SolidColorOverlayTransformationParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
-// SolidColorOverlayTransformationGradientUnion contains all possible properties
-// and values from [bool], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfSolidColorOverlayTransformationGradientBoolean OfString]
-type SolidColorOverlayTransformationGradientUnion struct {
- // This field will be present if the value is a [bool] instead of an object.
- OfSolidColorOverlayTransformationGradientBoolean bool `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfSolidColorOverlayTransformationGradientBoolean respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u SolidColorOverlayTransformationGradientUnion) AsSolidColorOverlayTransformationGradientBoolean() (v bool) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type SolidColorOverlayTransformationGradientUnionParam struct {
+ // Construct this variant with constant.ValueOf[bool]()
+ OfSolidColorOverlayTransformationGradientBoolean param.Opt[bool] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u SolidColorOverlayTransformationGradientUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u SolidColorOverlayTransformationGradientUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfSolidColorOverlayTransformationGradientBoolean, u.OfString)
+}
+func (u *SolidColorOverlayTransformationGradientUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u SolidColorOverlayTransformationGradientUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *SolidColorOverlayTransformationGradientUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *SolidColorOverlayTransformationGradientUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfSolidColorOverlayTransformationGradientBoolean) {
+ return &u.OfSolidColorOverlayTransformationGradientBoolean
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
type SolidColorOverlayTransformationGradientBoolean bool
@@ -982,118 +778,87 @@ const (
SolidColorOverlayTransformationGradientBooleanTrue SolidColorOverlayTransformationGradientBoolean = true
)
-// SolidColorOverlayTransformationHeightUnion contains all possible properties and
-// values from [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type SolidColorOverlayTransformationHeightUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u SolidColorOverlayTransformationHeightUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type SolidColorOverlayTransformationHeightUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u SolidColorOverlayTransformationHeightUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u SolidColorOverlayTransformationHeightUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *SolidColorOverlayTransformationHeightUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u SolidColorOverlayTransformationHeightUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *SolidColorOverlayTransformationHeightUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *SolidColorOverlayTransformationHeightUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// SolidColorOverlayTransformationRadiusUnion contains all possible properties and
-// values from [float64], [constant.Max].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfMax]
-type SolidColorOverlayTransformationRadiusUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [constant.Max] instead of an
- // object.
- OfMax constant.Max `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfMax respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u SolidColorOverlayTransformationRadiusUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type SolidColorOverlayTransformationRadiusUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ // Construct this variant with constant.ValueOf[constant.Max]()
+ OfMax constant.Max `json:",omitzero,inline"`
+ paramUnion
}
-func (u SolidColorOverlayTransformationRadiusUnion) AsMax() (v constant.Max) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u SolidColorOverlayTransformationRadiusUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfMax)
+}
+func (u *SolidColorOverlayTransformationRadiusUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u SolidColorOverlayTransformationRadiusUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *SolidColorOverlayTransformationRadiusUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *SolidColorOverlayTransformationRadiusUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfMax) {
+ return &u.OfMax
+ }
+ return nil
}
-// SolidColorOverlayTransformationWidthUnion contains all possible properties and
-// values from [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type SolidColorOverlayTransformationWidthUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u SolidColorOverlayTransformationWidthUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type SolidColorOverlayTransformationWidthUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u SolidColorOverlayTransformationWidthUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u SolidColorOverlayTransformationWidthUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *SolidColorOverlayTransformationWidthUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u SolidColorOverlayTransformationWidthUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *SolidColorOverlayTransformationWidthUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *SolidColorOverlayTransformationWidthUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
// Options for generating ImageKit URLs with transformations. See the
// [Transformations guide](https://imagekit.io/docs/transformations).
-type SrcOptions struct {
+//
+// The properties Src, URLEndpoint are required.
+type SrcOptionsParam struct {
// Accepts a relative or absolute path of the resource. If a relative path is
// provided, it is appended to the `urlEndpoint`. If an absolute path is provided,
// `urlEndpoint` is ignored.
@@ -1111,46 +876,37 @@ type SrcOptions struct {
// and ImageKit will return a 401 Unauthorized status code.
//
// [Learn more](https://imagekit.io/docs/media-delivery-basic-security#how-to-generate-signed-urls).
- ExpiresIn float64 `json:"expiresIn"`
- // These are additional query parameters that you want to add to the final URL.
- // They can be any query parameters and not necessarily related to ImageKit. This
- // is especially useful if you want to add a versioning parameter to your URLs.
- QueryParameters map[string]string `json:"queryParameters"`
+ ExpiresIn param.Opt[float64] `json:"expiresIn,omitzero"`
// Whether to sign the URL or not. Set this to `true` if you want to generate a
// signed URL. If `signed` is `true` and `expiresIn` is not specified, the signed
// URL will not expire (valid indefinitely). Note: If `expiresIn` is set to any
// value above 0, the URL will always be signed regardless of this setting.
// [Learn more](https://imagekit.io/docs/media-delivery-basic-security#how-to-generate-signed-urls).
- Signed bool `json:"signed"`
- // An array of objects specifying the transformations to be applied in the URL. If
- // more than one transformation is specified, they are applied in the order they
+ Signed param.Opt[bool] `json:"signed,omitzero"`
+ // These are additional query parameters that you want to add to the final URL.
+ // They can be any query parameters and not necessarily related to ImageKit. This
+ // is especially useful if you want to add a versioning parameter to your URLs.
+ QueryParameters map[string]string `json:"queryParameters,omitzero"`
+ // An array of objects specifying the transformations to be applied in the URL. If
+ // more than one transformation is specified, they are applied in the order they
// are specified as chained transformations. See
// [Chained transformations](https://imagekit.io/docs/transformations#chained-transformations).
- Transformation []Transformation `json:"transformation"`
+ Transformation []TransformationParam `json:"transformation,omitzero"`
// By default, the transformation string is added as a query parameter in the URL,
// e.g., `?tr=w-100,h-100`. If you want to add the transformation string in the
// path of the URL, set this to `path`. Learn more in the
// [Transformations guide](https://imagekit.io/docs/transformations).
//
// Any of "path", "query".
- TransformationPosition TransformationPosition `json:"transformationPosition"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Src respjson.Field
- URLEndpoint respjson.Field
- ExpiresIn respjson.Field
- QueryParameters respjson.Field
- Signed respjson.Field
- Transformation respjson.Field
- TransformationPosition respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r SrcOptions) RawJSON() string { return r.JSON.raw }
-func (r *SrcOptions) UnmarshalJSON(data []byte) error {
+ TransformationPosition TransformationPosition `json:"transformationPosition,omitzero"`
+ paramObj
+}
+
+func (r SrcOptionsParam) MarshalJSON() (data []byte, err error) {
+ type shadow SrcOptionsParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
+func (r *SrcOptionsParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
@@ -1168,7 +924,7 @@ const (
StreamingResolution2160 StreamingResolution = "2160"
)
-type SubtitleOverlay struct {
+type SubtitleOverlayParam struct {
// Specifies the relative path to the subtitle file used as an overlay.
Input string `json:"input,required"`
Type constant.Subtitle `json:"type,required"`
@@ -1177,49 +933,35 @@ type SubtitleOverlay struct {
// format automatically. To always use base64 encoding (`ie-{base64}`), set this
// parameter to `base64`. To always use plain text (`i-{input}`), set it to
// `plain`.
- //
- // Any of "auto", "plain", "base64".
- Encoding string `json:"encoding"`
+ Encoding string `json:"encoding,omitzero"`
// Control styling of the subtitle. See
// [Styling subtitles](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer).
- Transformation []SubtitleOverlayTransformation `json:"transformation"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Input respjson.Field
- Type respjson.Field
- Encoding respjson.Field
- Transformation respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
- BaseOverlay
-}
-
-// Returns the unmodified JSON received from the API
-func (r SubtitleOverlay) RawJSON() string { return r.JSON.raw }
-func (r *SubtitleOverlay) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+ Transformation []SubtitleOverlayTransformationParam `json:"transformation,omitzero"`
+ BaseOverlayParam
}
-func (SubtitleOverlay) ImplOverlayUnion() {}
+func (r SubtitleOverlayParam) MarshalJSON() (data []byte, err error) {
+ type shadow SubtitleOverlayParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
// Subtitle styling options.
// [Learn more](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
// from the docs.
-type SubtitleOverlayTransformation struct {
+type SubtitleOverlayTransformationParam struct {
// Specifies the subtitle background color using a standard color name, an RGB
// color code (e.g., FF0000), or an RGBA color code (e.g., FFAABB50).
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- Background string `json:"background"`
+ Background param.Opt[string] `json:"background,omitzero"`
// Sets the font color of the subtitle text using a standard color name, an RGB
// color code (e.g., FF0000), or an RGBA color code (e.g., FFAABB50).
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- Color string `json:"color"`
+ Color param.Opt[string] `json:"color,omitzero"`
// Font family for subtitles. Refer to the
// [supported fonts](https://imagekit.io/docs/add-overlays-on-images#supported-text-font-list).
- FontFamily string `json:"fontFamily"`
+ FontFamily param.Opt[string] `json:"fontFamily,omitzero"`
// Sets the font outline of the subtitle text. Requires the outline width (an
// integer) and the outline color (as an RGB color code, RGBA color code, or
// standard web color name) separated by an underscore. Example: `fol-2_blue`
@@ -1228,7 +970,7 @@ type SubtitleOverlayTransformation struct {
// outline color `#A1CCDD` at 50% opacity).
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- FontOutline string `json:"fontOutline"`
+ FontOutline param.Opt[string] `json:"fontOutline,omitzero"`
// Sets the font shadow for the subtitle text. Requires the shadow color (as an RGB
// color code, RGBA color code, or standard web color name) and shadow indent (an
// integer) separated by an underscore. Example: `fsh-blue_2` (shadow color blue,
@@ -1236,35 +978,26 @@ type SubtitleOverlayTransformation struct {
// `fsh-A1CCDD50_3` (shadow color `#A1CCDD` at 50% opacity, indent of 3px).
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- FontShadow string `json:"fontShadow"`
+ FontShadow param.Opt[string] `json:"fontShadow,omitzero"`
// Sets the font size of subtitle text.
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
- FontSize float64 `json:"fontSize"`
+ FontSize param.Opt[float64] `json:"fontSize,omitzero"`
// Sets the typography style of the subtitle text. Supports values are `b` for
// bold, `i` for italics, and `b_i` for bold with italics.
//
// [Subtitle styling options](https://imagekit.io/docs/add-overlays-on-videos#styling-controls-for-subtitles-layer)
//
// Any of "b", "i", "b_i".
- Typography SubtitleOverlayTransformationTypography `json:"typography"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Background respjson.Field
- Color respjson.Field
- FontFamily respjson.Field
- FontOutline respjson.Field
- FontShadow respjson.Field
- FontSize respjson.Field
- Typography respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r SubtitleOverlayTransformation) RawJSON() string { return r.JSON.raw }
-func (r *SubtitleOverlayTransformation) UnmarshalJSON(data []byte) error {
+ Typography SubtitleOverlayTransformationTypography `json:"typography,omitzero"`
+ paramObj
+}
+
+func (r SubtitleOverlayTransformationParam) MarshalJSON() (data []byte, err error) {
+ type shadow SubtitleOverlayTransformationParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
+func (r *SubtitleOverlayTransformationParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
@@ -1280,7 +1013,7 @@ const (
SubtitleOverlayTransformationTypographyBI SubtitleOverlayTransformationTypography = "b_i"
)
-type TextOverlay struct {
+type TextOverlayParam struct {
// Specifies the text to be displayed in the overlay. The SDK automatically handles
// special characters and encoding.
Text string `json:"text,required"`
@@ -1290,109 +1023,80 @@ type TextOverlay struct {
// appropriate format based on the input text. To always use base64
// (`ie-{base64}`), set this parameter to `base64`. To always use plain text
// (`i-{input}`), set it to `plain`.
- //
- // Any of "auto", "plain", "base64".
- Encoding string `json:"encoding"`
+ Encoding string `json:"encoding,omitzero"`
// Control styling of the text overlay. See
// [Text overlays](https://imagekit.io/docs/add-overlays-on-images#text-overlay).
- Transformation []TextOverlayTransformation `json:"transformation"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Text respjson.Field
- Type respjson.Field
- Encoding respjson.Field
- Transformation respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
- BaseOverlay
-}
-
-// Returns the unmodified JSON received from the API
-func (r TextOverlay) RawJSON() string { return r.JSON.raw }
-func (r *TextOverlay) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+ Transformation []TextOverlayTransformationParam `json:"transformation,omitzero"`
+ BaseOverlayParam
}
-func (TextOverlay) ImplOverlayUnion() {}
+func (r TextOverlayParam) MarshalJSON() (data []byte, err error) {
+ type shadow TextOverlayParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
-type TextOverlayTransformation struct {
+type TextOverlayTransformationParam struct {
// Specifies the transparency level of the text overlay. Accepts integers from `1`
// to `9`.
- Alpha float64 `json:"alpha"`
+ Alpha param.Opt[float64] `json:"alpha,omitzero"`
// Specifies the background color of the text overlay. Accepts an RGB hex code, an
// RGBA code, or a color name.
- Background string `json:"background"`
- // Flip the text overlay horizontally, vertically, or both.
- //
- // Any of "h", "v", "h_v", "v_h".
- Flip TextOverlayTransformationFlip `json:"flip"`
+ Background param.Opt[string] `json:"background,omitzero"`
// Specifies the font color of the overlaid text. Accepts an RGB hex code (e.g.,
// `FF0000`), an RGBA code (e.g., `FFAABB50`), or a color name.
- FontColor string `json:"fontColor"`
+ FontColor param.Opt[string] `json:"fontColor,omitzero"`
// Specifies the font family of the overlaid text. Choose from the supported fonts
// list or use a custom font. See
// [Supported fonts](https://imagekit.io/docs/add-overlays-on-images#supported-text-font-list)
// and
// [Custom font](https://imagekit.io/docs/add-overlays-on-images#change-font-family-in-text-overlay).
- FontFamily string `json:"fontFamily"`
+ FontFamily param.Opt[string] `json:"fontFamily,omitzero"`
+ // Specifies the typography style of the text. Supported values:
+ //
+ // - Single styles: `b` (bold), `i` (italic), `strikethrough`.
+ // - Combinations: Any combination separated by underscores, e.g., `b_i`,
+ // `b_i_strikethrough`.
+ Typography param.Opt[string] `json:"typography,omitzero"`
+ // Flip the text overlay horizontally, vertically, or both.
+ //
+ // Any of "h", "v", "h_v", "v_h".
+ Flip TextOverlayTransformationFlip `json:"flip,omitzero"`
// Specifies the font size of the overlaid text. Accepts a numeric value or an
// arithmetic expression.
- FontSize TextOverlayTransformationFontSizeUnion `json:"fontSize"`
+ FontSize TextOverlayTransformationFontSizeUnionParam `json:"fontSize,omitzero"`
// Specifies the inner alignment of the text when width is more than the text
// length.
//
// Any of "left", "right", "center".
- InnerAlignment TextOverlayTransformationInnerAlignment `json:"innerAlignment"`
+ InnerAlignment TextOverlayTransformationInnerAlignment `json:"innerAlignment,omitzero"`
// Specifies the line height of the text overlay. Accepts integer values
// representing line height in points. It can also accept
// [arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations)
// such as `bw_mul_0.2`, or `bh_div_20`.
- LineHeight TextOverlayTransformationLineHeightUnion `json:"lineHeight"`
+ LineHeight TextOverlayTransformationLineHeightUnionParam `json:"lineHeight,omitzero"`
// Specifies the padding around the overlaid text. Can be provided as a single
// positive integer or multiple values separated by underscores (following CSS
// shorthand order). Arithmetic expressions are also accepted.
- Padding TextOverlayTransformationPaddingUnion `json:"padding"`
+ Padding TextOverlayTransformationPaddingUnionParam `json:"padding,omitzero"`
// Specifies the corner radius of the text overlay. Set to `max` to achieve a
// circular or oval shape.
- Radius TextOverlayTransformationRadiusUnion `json:"radius"`
+ Radius TextOverlayTransformationRadiusUnionParam `json:"radius,omitzero"`
// Specifies the rotation angle of the text overlay. Accepts a numeric value for
// clockwise rotation or a string prefixed with "N" for counter-clockwise rotation.
- Rotation TextOverlayTransformationRotationUnion `json:"rotation"`
- // Specifies the typography style of the text. Supported values:
- //
- // - Single styles: `b` (bold), `i` (italic), `strikethrough`.
- // - Combinations: Any combination separated by underscores, e.g., `b_i`,
- // `b_i_strikethrough`.
- Typography string `json:"typography"`
+ Rotation TextOverlayTransformationRotationUnionParam `json:"rotation,omitzero"`
// Specifies the maximum width (in pixels) of the overlaid text. The text wraps
// automatically, and arithmetic expressions (e.g., `bw_mul_0.2` or `bh_div_2`) are
// supported. Useful when used in conjunction with the `background`. Learn about
// [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
- Width TextOverlayTransformationWidthUnion `json:"width"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Alpha respjson.Field
- Background respjson.Field
- Flip respjson.Field
- FontColor respjson.Field
- FontFamily respjson.Field
- FontSize respjson.Field
- InnerAlignment respjson.Field
- LineHeight respjson.Field
- Padding respjson.Field
- Radius respjson.Field
- Rotation respjson.Field
- Typography respjson.Field
- Width respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r TextOverlayTransformation) RawJSON() string { return r.JSON.raw }
-func (r *TextOverlayTransformation) UnmarshalJSON(data []byte) error {
+ Width TextOverlayTransformationWidthUnionParam `json:"width,omitzero"`
+ paramObj
+}
+
+func (r TextOverlayTransformationParam) MarshalJSON() (data []byte, err error) {
+ type shadow TextOverlayTransformationParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
+func (r *TextOverlayTransformationParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
@@ -1406,40 +1110,29 @@ const (
TextOverlayTransformationFlipVH TextOverlayTransformationFlip = "v_h"
)
-// TextOverlayTransformationFontSizeUnion contains all possible properties and
-// values from [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TextOverlayTransformationFontSizeUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TextOverlayTransformationFontSizeUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TextOverlayTransformationFontSizeUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TextOverlayTransformationFontSizeUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TextOverlayTransformationFontSizeUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TextOverlayTransformationFontSizeUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TextOverlayTransformationFontSizeUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TextOverlayTransformationFontSizeUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TextOverlayTransformationFontSizeUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
// Specifies the inner alignment of the text when width is more than the text
@@ -1452,185 +1145,130 @@ const (
TextOverlayTransformationInnerAlignmentCenter TextOverlayTransformationInnerAlignment = "center"
)
-// TextOverlayTransformationLineHeightUnion contains all possible properties and
-// values from [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TextOverlayTransformationLineHeightUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TextOverlayTransformationLineHeightUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TextOverlayTransformationLineHeightUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TextOverlayTransformationLineHeightUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TextOverlayTransformationLineHeightUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TextOverlayTransformationLineHeightUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TextOverlayTransformationLineHeightUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TextOverlayTransformationLineHeightUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TextOverlayTransformationLineHeightUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TextOverlayTransformationPaddingUnion contains all possible properties and
-// values from [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TextOverlayTransformationPaddingUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TextOverlayTransformationPaddingUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TextOverlayTransformationPaddingUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TextOverlayTransformationPaddingUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TextOverlayTransformationPaddingUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TextOverlayTransformationPaddingUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TextOverlayTransformationPaddingUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TextOverlayTransformationPaddingUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TextOverlayTransformationPaddingUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TextOverlayTransformationRadiusUnion contains all possible properties and values
-// from [float64], [constant.Max].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfMax]
-type TextOverlayTransformationRadiusUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [constant.Max] instead of an
- // object.
- OfMax constant.Max `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfMax respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TextOverlayTransformationRadiusUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TextOverlayTransformationRadiusUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ // Construct this variant with constant.ValueOf[constant.Max]()
+ OfMax constant.Max `json:",omitzero,inline"`
+ paramUnion
}
-func (u TextOverlayTransformationRadiusUnion) AsMax() (v constant.Max) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TextOverlayTransformationRadiusUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfMax)
+}
+func (u *TextOverlayTransformationRadiusUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TextOverlayTransformationRadiusUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TextOverlayTransformationRadiusUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TextOverlayTransformationRadiusUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfMax) {
+ return &u.OfMax
+ }
+ return nil
}
-// TextOverlayTransformationRotationUnion contains all possible properties and
-// values from [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TextOverlayTransformationRotationUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TextOverlayTransformationRotationUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TextOverlayTransformationRotationUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TextOverlayTransformationRotationUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TextOverlayTransformationRotationUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TextOverlayTransformationRotationUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TextOverlayTransformationRotationUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TextOverlayTransformationRotationUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TextOverlayTransformationRotationUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TextOverlayTransformationWidthUnion contains all possible properties and values
-// from [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TextOverlayTransformationWidthUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TextOverlayTransformationWidthUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TextOverlayTransformationWidthUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TextOverlayTransformationWidthUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TextOverlayTransformationWidthUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TextOverlayTransformationWidthUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TextOverlayTransformationWidthUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TextOverlayTransformationWidthUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TextOverlayTransformationWidthUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
// The SDK provides easy-to-use names for transformations. These names are
@@ -1639,48 +1277,125 @@ func (r *TextOverlayTransformationWidthUnion) UnmarshalJSON(data []byte) error {
// use a transformation that is not supported by the SDK, You can use the `raw`
// parameter to pass the transformation string directly. See the
// [Transformations documentation](https://imagekit.io/docs/transformations).
-type Transformation struct {
+type TransformationParam struct {
// Uses AI to change the background. Provide a text prompt or a base64-encoded
// prompt, e.g., `prompt-snow road` or `prompte-[urlencoded_base64_encoded_text]`.
// Not supported inside overlay. See
// [AI Change Background](https://imagekit.io/docs/ai-transformations#change-background-e-changebg).
- AIChangeBackground string `json:"aiChangeBackground"`
+ AIChangeBackground param.Opt[string] `json:"aiChangeBackground,omitzero"`
+ // Uses AI to edit images based on a text prompt. Provide a text prompt or a
+ // base64-encoded prompt, e.g., `prompt-snow road` or
+ // `prompte-[urlencoded_base64_encoded_text]`. Not supported inside overlay.
+ // See [AI Edit](https://imagekit.io/docs/ai-transformations#edit-image-e-edit).
+ AIEdit param.Opt[string] `json:"aiEdit,omitzero"`
+ // Specifies the background to be used in conjunction with certain cropping
+ // strategies when resizing an image.
+ //
+ // - A solid color: e.g., `red`, `F3F3F3`, `AAFF0010`. See
+ // [Solid color background](https://imagekit.io/docs/effects-and-enhancements#solid-color-background).
+ // - A blurred background: e.g., `blurred`, `blurred_25_N15`, etc. See
+ // [Blurred background](https://imagekit.io/docs/effects-and-enhancements#blurred-background).
+ // - Expand the image boundaries using generative fill: `genfill`. Not supported
+ // inside overlay. Optionally, control the background scene by passing a text
+ // prompt: `genfill[:-prompt-${text}]` or
+ // `genfill[:-prompte-${urlencoded_base64_encoded_text}]`. See
+ // [Generative fill background](https://imagekit.io/docs/ai-transformations#generative-fill-bg-genfill).
+ Background param.Opt[string] `json:"background,omitzero"`
+ // Specifies the Gaussian blur level. Accepts an integer value between 1 and 100,
+ // or an expression like `bl-10`. See
+ // [Blur](https://imagekit.io/docs/effects-and-enhancements#blur---bl).
+ Blur param.Opt[float64] `json:"blur,omitzero"`
+ // Adds a border to the output media. Accepts a string in the format
+ // `_` (e.g., `5_FFF000` for a 5px yellow border), or an
+ // expression like `ih_div_20_FF00FF`. See
+ // [Border](https://imagekit.io/docs/effects-and-enhancements#border---b).
+ Border param.Opt[string] `json:"border,omitzero"`
+ // Indicates whether the output image should retain the original color profile. See
+ // [Color profile](https://imagekit.io/docs/image-optimization#color-profile---cp).
+ ColorProfile param.Opt[bool] `json:"colorProfile,omitzero"`
+ // Specifies a fallback image if the resource is not found, e.g., a URL or file
+ // path. See
+ // [Default image](https://imagekit.io/docs/image-transformation#default-image---di).
+ DefaultImage param.Opt[string] `json:"defaultImage,omitzero"`
+ // Accepts values between 0.1 and 5, or `auto` for automatic device pixel ratio
+ // (DPR) calculation. See
+ // [DPR](https://imagekit.io/docs/image-resize-and-crop#dpr---dpr).
+ Dpr param.Opt[float64] `json:"dpr,omitzero"`
+ // Refines padding and cropping behavior for pad resize, maintain ratio, and
+ // extract crop modes. Supports manual positions and coordinate-based focus. With
+ // AI-based cropping, you can automatically keep key subjects in frame—such as
+ // faces or detected objects (e.g., `fo-face`, `fo-person`, `fo-car`)— while
+ // resizing.
+ //
+ // - See [Focus](https://imagekit.io/docs/image-resize-and-crop#focus---fo).
+ // - [Object aware cropping](https://imagekit.io/docs/image-resize-and-crop#object-aware-cropping---fo-object-name)
+ Focus param.Opt[string] `json:"focus,omitzero"`
+ // Specifies whether the output image (in JPEG or PNG) should be compressed
+ // losslessly. See
+ // [Lossless compression](https://imagekit.io/docs/image-optimization#lossless-webp-and-png---lo).
+ Lossless param.Opt[bool] `json:"lossless,omitzero"`
+ // By default, ImageKit removes all metadata during automatic image compression.
+ // Set this to true to preserve metadata. See
+ // [Image metadata](https://imagekit.io/docs/image-optimization#image-metadata---md).
+ Metadata param.Opt[bool] `json:"metadata,omitzero"`
+ // Named transformation reference. See
+ // [Named transformations](https://imagekit.io/docs/transformations#named-transformations).
+ Named param.Opt[string] `json:"named,omitzero"`
+ // Specifies the opacity level of the output image. See
+ // [Opacity](https://imagekit.io/docs/effects-and-enhancements#opacity---o).
+ Opacity param.Opt[float64] `json:"opacity,omitzero"`
+ // If set to true, serves the original file without applying any transformations.
+ // See
+ // [Deliver original file as-is](https://imagekit.io/docs/core-delivery-features#deliver-original-file-as-is---orig-true).
+ Original param.Opt[bool] `json:"original,omitzero"`
+ // Specifies whether the output JPEG image should be rendered progressively.
+ // Progressive loading begins with a low-quality, pixelated version of the full
+ // image, which gradually improves to provide a faster perceived load time. See
+ // [Progressive images](https://imagekit.io/docs/image-optimization#progressive-image---pr).
+ Progressive param.Opt[bool] `json:"progressive,omitzero"`
+ // Specifies the quality of the output image for lossy formats such as JPEG, WebP,
+ // and AVIF. A higher quality value results in a larger file size with better
+ // quality, while a lower value produces a smaller file size with reduced quality.
+ // See [Quality](https://imagekit.io/docs/image-optimization#quality---q).
+ Quality param.Opt[float64] `json:"quality,omitzero"`
+ // Pass any transformation not directly supported by the SDK. This transformation
+ // string is appended to the URL as provided.
+ Raw param.Opt[string] `json:"raw,omitzero"`
+ // Accepts a numeric value that determines how much to zoom in or out of the
+ // cropped area. It should be used in conjunction with fo-face or fo-.
+ // See [Zoom](https://imagekit.io/docs/image-resize-and-crop#zoom---z).
+ Zoom param.Opt[float64] `json:"zoom,omitzero"`
// Adds an AI-based drop shadow around a foreground object on a transparent or
// removed background. Optionally, control the direction, elevation, and saturation
// of the light source (e.g., `az-45` to change light direction). Pass `true` for
// the default drop shadow, or provide a string for a custom drop shadow. Supported
// inside overlay. See
// [AI Drop Shadow](https://imagekit.io/docs/ai-transformations#ai-drop-shadow-e-dropshadow).
- AIDropShadow TransformationAIDropShadowUnion `json:"aiDropShadow"`
- // Uses AI to edit images based on a text prompt. Provide a text prompt or a
- // base64-encoded prompt, e.g., `prompt-snow road` or
- // `prompte-[urlencoded_base64_encoded_text]`. Not supported inside overlay.
- // See [AI Edit](https://imagekit.io/docs/ai-transformations#edit-image-e-edit).
- AIEdit string `json:"aiEdit"`
+ AIDropShadow TransformationAIDropShadowUnionParam `json:"aiDropShadow,omitzero"`
// Applies ImageKit's in-house background removal. Supported inside overlay. See
// [AI Background Removal](https://imagekit.io/docs/ai-transformations#imagekit-background-removal-e-bgremove).
//
// Any of true.
- AIRemoveBackground bool `json:"aiRemoveBackground"`
+ AIRemoveBackground bool `json:"aiRemoveBackground,omitzero"`
// Uses third-party background removal. Note: It is recommended to use
// aiRemoveBackground, ImageKit's in-house solution, which is more cost-effective.
// Supported inside overlay. See
// [External Background Removal](https://imagekit.io/docs/ai-transformations#background-removal-e-removedotbg).
//
// Any of true.
- AIRemoveBackgroundExternal bool `json:"aiRemoveBackgroundExternal"`
+ AIRemoveBackgroundExternal bool `json:"aiRemoveBackgroundExternal,omitzero"`
// Performs AI-based retouching to improve faces or product shots. Not supported
// inside overlay. See
// [AI Retouch](https://imagekit.io/docs/ai-transformations#retouch-e-retouch).
//
// Any of true.
- AIRetouch bool `json:"aiRetouch"`
+ AIRetouch bool `json:"aiRetouch,omitzero"`
// Upscales images beyond their original dimensions using AI. Not supported inside
// overlay. See
// [AI Upscale](https://imagekit.io/docs/ai-transformations#upscale-e-upscale).
//
// Any of true.
- AIUpscale bool `json:"aiUpscale"`
+ AIUpscale bool `json:"aiUpscale,omitzero"`
// Generates a variation of an image using AI. This produces a new image with
// slight variations from the original, such as changes in color, texture, and
// other visual elements, while preserving the structure and essence of the
@@ -1688,90 +1403,48 @@ type Transformation struct {
// [AI Generate Variations](https://imagekit.io/docs/ai-transformations#generate-variations-of-an-image-e-genvar).
//
// Any of true.
- AIVariation bool `json:"aiVariation"`
+ AIVariation bool `json:"aiVariation,omitzero"`
// Specifies the aspect ratio for the output, e.g., "ar-4-3". Typically used with
// either width or height (but not both). For example: aspectRatio = `4:3`, `4_3`,
// or an expression like `iar_div_2`. See
// [Image resize and crop – Aspect ratio](https://imagekit.io/docs/image-resize-and-crop#aspect-ratio---ar).
- AspectRatio TransformationAspectRatioUnion `json:"aspectRatio"`
+ AspectRatio TransformationAspectRatioUnionParam `json:"aspectRatio,omitzero"`
// Specifies the audio codec, e.g., `aac`, `opus`, or `none`. See
// [Audio codec](https://imagekit.io/docs/video-optimization#audio-codec---ac).
//
// Any of "aac", "opus", "none".
- AudioCodec TransformationAudioCodec `json:"audioCodec"`
- // Specifies the background to be used in conjunction with certain cropping
- // strategies when resizing an image.
- //
- // - A solid color: e.g., `red`, `F3F3F3`, `AAFF0010`. See
- // [Solid color background](https://imagekit.io/docs/effects-and-enhancements#solid-color-background).
- // - A blurred background: e.g., `blurred`, `blurred_25_N15`, etc. See
- // [Blurred background](https://imagekit.io/docs/effects-and-enhancements#blurred-background).
- // - Expand the image boundaries using generative fill: `genfill`. Not supported
- // inside overlay. Optionally, control the background scene by passing a text
- // prompt: `genfill[:-prompt-${text}]` or
- // `genfill[:-prompte-${urlencoded_base64_encoded_text}]`. See
- // [Generative fill background](https://imagekit.io/docs/ai-transformations#generative-fill-bg-genfill).
- Background string `json:"background"`
- // Specifies the Gaussian blur level. Accepts an integer value between 1 and 100,
- // or an expression like `bl-10`. See
- // [Blur](https://imagekit.io/docs/effects-and-enhancements#blur---bl).
- Blur float64 `json:"blur"`
- // Adds a border to the output media. Accepts a string in the format
- // `_` (e.g., `5_FFF000` for a 5px yellow border), or an
- // expression like `ih_div_20_FF00FF`. See
- // [Border](https://imagekit.io/docs/effects-and-enhancements#border---b).
- Border string `json:"border"`
- // Indicates whether the output image should retain the original color profile. See
- // [Color profile](https://imagekit.io/docs/image-optimization#color-profile---cp).
- ColorProfile bool `json:"colorProfile"`
+ AudioCodec TransformationAudioCodec `json:"audioCodec,omitzero"`
// Automatically enhances the contrast of an image (contrast stretch). See
// [Contrast Stretch](https://imagekit.io/docs/effects-and-enhancements#contrast-stretch---e-contrast).
//
// Any of true.
- ContrastStretch bool `json:"contrastStretch"`
+ ContrastStretch bool `json:"contrastStretch,omitzero"`
// Crop modes for image resizing. See
// [Crop modes & focus](https://imagekit.io/docs/image-resize-and-crop#crop-crop-modes--focus).
//
// Any of "force", "at_max", "at_max_enlarge", "at_least", "maintain_ratio".
- Crop TransformationCrop `json:"crop"`
+ Crop TransformationCrop `json:"crop,omitzero"`
// Additional crop modes for image resizing. See
// [Crop modes & focus](https://imagekit.io/docs/image-resize-and-crop#crop-crop-modes--focus).
//
// Any of "pad_resize", "extract", "pad_extract".
- CropMode TransformationCropMode `json:"cropMode"`
- // Specifies a fallback image if the resource is not found, e.g., a URL or file
- // path. See
- // [Default image](https://imagekit.io/docs/image-transformation#default-image---di).
- DefaultImage string `json:"defaultImage"`
- // Accepts values between 0.1 and 5, or `auto` for automatic device pixel ratio
- // (DPR) calculation. See
- // [DPR](https://imagekit.io/docs/image-resize-and-crop#dpr---dpr).
- Dpr float64 `json:"dpr"`
+ CropMode TransformationCropMode `json:"cropMode,omitzero"`
// Specifies the duration (in seconds) for trimming videos, e.g., `5` or `10.5`.
// Typically used with startOffset to indicate the length from the start offset.
// Arithmetic expressions are supported. See
// [Trim videos – Duration](https://imagekit.io/docs/trim-videos#duration---du).
- Duration TransformationDurationUnion `json:"duration"`
+ Duration TransformationDurationUnionParam `json:"duration,omitzero"`
// Specifies the end offset (in seconds) for trimming videos, e.g., `5` or `10.5`.
// Typically used with startOffset to define a time window. Arithmetic expressions
// are supported. See
// [Trim videos – End offset](https://imagekit.io/docs/trim-videos#end-offset---eo).
- EndOffset TransformationEndOffsetUnion `json:"endOffset"`
+ EndOffset TransformationEndOffsetUnionParam `json:"endOffset,omitzero"`
// Flips or mirrors an image either horizontally, vertically, or both. Acceptable
// values: `h` (horizontal), `v` (vertical), `h_v` (horizontal and vertical), or
// `v_h`. See [Flip](https://imagekit.io/docs/effects-and-enhancements#flip---fl).
//
// Any of "h", "v", "h_v", "v_h".
- Flip TransformationFlip `json:"flip"`
- // Refines padding and cropping behavior for pad resize, maintain ratio, and
- // extract crop modes. Supports manual positions and coordinate-based focus. With
- // AI-based cropping, you can automatically keep key subjects in frame—such as
- // faces or detected objects (e.g., `fo-face`, `fo-person`, `fo-car`)— while
- // resizing.
- //
- // - See [Focus](https://imagekit.io/docs/image-resize-and-crop#focus---fo).
- // - [Object aware cropping](https://imagekit.io/docs/image-resize-and-crop#object-aware-cropping---fo-object-name)
- Focus string `json:"focus"`
+ Flip TransformationFlip `json:"flip,omitzero"`
// Specifies the output format for images or videos, e.g., `jpg`, `png`, `webp`,
// `mp4`, or `auto`. You can also pass `orig` for images to return the original
// format. ImageKit automatically delivers images and videos in the optimal format
@@ -1782,226 +1455,151 @@ type Transformation struct {
//
// Any of "auto", "webp", "jpg", "jpeg", "png", "gif", "svg", "mp4", "webm",
// "avif", "orig".
- Format TransformationFormat `json:"format"`
+ Format TransformationFormat `json:"format,omitzero"`
// Creates a linear gradient with two colors. Pass `true` for a default gradient,
// or provide a string for a custom gradient. See
// [Gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
- Gradient TransformationGradientUnion `json:"gradient"`
+ Gradient TransformationGradientUnionParam `json:"gradient,omitzero"`
// Enables a grayscale effect for images. See
// [Grayscale](https://imagekit.io/docs/effects-and-enhancements#grayscale---e-grayscale).
//
// Any of true.
- Grayscale bool `json:"grayscale"`
+ Grayscale bool `json:"grayscale,omitzero"`
// Specifies the height of the output. If a value between 0 and 1 is provided, it
// is treated as a percentage (e.g., `0.5` represents 50% of the original height).
// You can also supply arithmetic expressions (e.g., `ih_mul_0.5`). Height
// transformation –
// [Images](https://imagekit.io/docs/image-resize-and-crop#height---h) ·
// [Videos](https://imagekit.io/docs/video-resize-and-crop#height---h)
- Height TransformationHeightUnion `json:"height"`
- // Specifies whether the output image (in JPEG or PNG) should be compressed
- // losslessly. See
- // [Lossless compression](https://imagekit.io/docs/image-optimization#lossless-webp-and-png---lo).
- Lossless bool `json:"lossless"`
- // By default, ImageKit removes all metadata during automatic image compression.
- // Set this to true to preserve metadata. See
- // [Image metadata](https://imagekit.io/docs/image-optimization#image-metadata---md).
- Metadata bool `json:"metadata"`
- // Named transformation reference. See
- // [Named transformations](https://imagekit.io/docs/transformations#named-transformations).
- Named string `json:"named"`
- // Specifies the opacity level of the output image. See
- // [Opacity](https://imagekit.io/docs/effects-and-enhancements#opacity---o).
- Opacity float64 `json:"opacity"`
- // If set to true, serves the original file without applying any transformations.
- // See
- // [Deliver original file as-is](https://imagekit.io/docs/core-delivery-features#deliver-original-file-as-is---orig-true).
- Original bool `json:"original"`
+ Height TransformationHeightUnionParam `json:"height,omitzero"`
// Specifies an overlay to be applied on the parent image or video. ImageKit
// supports overlays including images, text, videos, subtitles, and solid colors.
// See
// [Overlay using layers](https://imagekit.io/docs/transformations#overlay-using-layers).
- Overlay OverlayUnion `json:"overlay"`
+ Overlay OverlayUnionParam `json:"overlay,omitzero"`
// Extracts a specific page or frame from multi-page or layered files (PDF, PSD,
// AI). For example, specify by number (e.g., `2`), a range (e.g., `3-4` for the
// 2nd and 3rd layers), or by name (e.g., `name-layer-4` for a PSD layer). See
// [Thumbnail extraction](https://imagekit.io/docs/vector-and-animated-images#get-thumbnail-from-psd-pdf-ai-eps-and-animated-files).
- Page TransformationPageUnion `json:"page"`
- // Specifies whether the output JPEG image should be rendered progressively.
- // Progressive loading begins with a low-quality, pixelated version of the full
- // image, which gradually improves to provide a faster perceived load time. See
- // [Progressive images](https://imagekit.io/docs/image-optimization#progressive-image---pr).
- Progressive bool `json:"progressive"`
- // Specifies the quality of the output image for lossy formats such as JPEG, WebP,
- // and AVIF. A higher quality value results in a larger file size with better
- // quality, while a lower value produces a smaller file size with reduced quality.
- // See [Quality](https://imagekit.io/docs/image-optimization#quality---q).
- Quality float64 `json:"quality"`
+ Page TransformationPageUnionParam `json:"page,omitzero"`
// Specifies the corner radius for rounded corners (e.g., 20) or `max` for circular
// or oval shape. See
// [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
- Radius TransformationRadiusUnion `json:"radius"`
- // Pass any transformation not directly supported by the SDK. This transformation
- // string is appended to the URL as provided.
- Raw string `json:"raw"`
+ Radius TransformationRadiusUnionParam `json:"radius,omitzero"`
// Specifies the rotation angle in degrees. Positive values rotate the image
// clockwise; you can also use, for example, `N40` for counterclockwise rotation or
// `auto` to use the orientation specified in the image's EXIF data. For videos,
// only the following values are supported: 0, 90, 180, 270, or 360. See
// [Rotate](https://imagekit.io/docs/effects-and-enhancements#rotate---rt).
- Rotation TransformationRotationUnion `json:"rotation"`
+ Rotation TransformationRotationUnionParam `json:"rotation,omitzero"`
// Adds a shadow beneath solid objects in an image with a transparent background.
// For AI-based drop shadows, refer to aiDropShadow. Pass `true` for a default
// shadow, or provide a string for a custom shadow. See
// [Shadow](https://imagekit.io/docs/effects-and-enhancements#shadow---e-shadow).
- Shadow TransformationShadowUnion `json:"shadow"`
+ Shadow TransformationShadowUnionParam `json:"shadow,omitzero"`
// Sharpens the input image, highlighting edges and finer details. Pass `true` for
// default sharpening, or provide a numeric value for custom sharpening. See
// [Sharpen](https://imagekit.io/docs/effects-and-enhancements#sharpen---e-sharpen).
- Sharpen TransformationSharpenUnion `json:"sharpen"`
+ Sharpen TransformationSharpenUnionParam `json:"sharpen,omitzero"`
// Specifies the start offset (in seconds) for trimming videos, e.g., `5` or
// `10.5`. Arithmetic expressions are also supported. See
// [Trim videos – Start offset](https://imagekit.io/docs/trim-videos#start-offset---so).
- StartOffset TransformationStartOffsetUnion `json:"startOffset"`
+ StartOffset TransformationStartOffsetUnionParam `json:"startOffset,omitzero"`
// An array of resolutions for adaptive bitrate streaming, e.g., [`240`, `360`,
// `480`, `720`, `1080`]. See
// [Adaptive Bitrate Streaming](https://imagekit.io/docs/adaptive-bitrate-streaming).
- StreamingResolutions []StreamingResolution `json:"streamingResolutions"`
+ StreamingResolutions []StreamingResolution `json:"streamingResolutions,omitzero"`
// Useful for images with a solid or nearly solid background and a central object.
// This parameter trims the background, leaving only the central object in the
// output image. See
// [Trim edges](https://imagekit.io/docs/effects-and-enhancements#trim-edges---t).
- Trim TransformationTrimUnion `json:"trim"`
+ Trim TransformationTrimUnionParam `json:"trim,omitzero"`
// Applies Unsharp Masking (USM), an image sharpening technique. Pass `true` for a
// default unsharp mask, or provide a string for a custom unsharp mask. See
// [Unsharp Mask](https://imagekit.io/docs/effects-and-enhancements#unsharp-mask---e-usm).
- UnsharpMask TransformationUnsharpMaskUnion `json:"unsharpMask"`
+ UnsharpMask TransformationUnsharpMaskUnionParam `json:"unsharpMask,omitzero"`
// Specifies the video codec, e.g., `h264`, `vp9`, `av1`, or `none`. See
// [Video codec](https://imagekit.io/docs/video-optimization#video-codec---vc).
//
// Any of "h264", "vp9", "av1", "none".
- VideoCodec TransformationVideoCodec `json:"videoCodec"`
+ VideoCodec TransformationVideoCodec `json:"videoCodec,omitzero"`
// Specifies the width of the output. If a value between 0 and 1 is provided, it is
// treated as a percentage (e.g., `0.4` represents 40% of the original width). You
// can also supply arithmetic expressions (e.g., `iw_div_2`). Width transformation
// – [Images](https://imagekit.io/docs/image-resize-and-crop#width---w) ·
// [Videos](https://imagekit.io/docs/video-resize-and-crop#width---w)
- Width TransformationWidthUnion `json:"width"`
+ Width TransformationWidthUnionParam `json:"width,omitzero"`
// Focus using cropped image coordinates - X coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
- X TransformationXUnion `json:"x"`
+ X TransformationXUnionParam `json:"x,omitzero"`
// Focus using cropped image coordinates - X center coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
- XCenter TransformationXCenterUnion `json:"xCenter"`
+ XCenter TransformationXCenterUnionParam `json:"xCenter,omitzero"`
// Focus using cropped image coordinates - Y coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
- Y TransformationYUnion `json:"y"`
+ Y TransformationYUnionParam `json:"y,omitzero"`
// Focus using cropped image coordinates - Y center coordinate. See
// [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
- YCenter TransformationYCenterUnion `json:"yCenter"`
- // Accepts a numeric value that determines how much to zoom in or out of the
- // cropped area. It should be used in conjunction with fo-face or fo-.
- // See [Zoom](https://imagekit.io/docs/image-resize-and-crop#zoom---z).
- Zoom float64 `json:"zoom"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- AIChangeBackground respjson.Field
- AIDropShadow respjson.Field
- AIEdit respjson.Field
- AIRemoveBackground respjson.Field
- AIRemoveBackgroundExternal respjson.Field
- AIRetouch respjson.Field
- AIUpscale respjson.Field
- AIVariation respjson.Field
- AspectRatio respjson.Field
- AudioCodec respjson.Field
- Background respjson.Field
- Blur respjson.Field
- Border respjson.Field
- ColorProfile respjson.Field
- ContrastStretch respjson.Field
- Crop respjson.Field
- CropMode respjson.Field
- DefaultImage respjson.Field
- Dpr respjson.Field
- Duration respjson.Field
- EndOffset respjson.Field
- Flip respjson.Field
- Focus respjson.Field
- Format respjson.Field
- Gradient respjson.Field
- Grayscale respjson.Field
- Height respjson.Field
- Lossless respjson.Field
- Metadata respjson.Field
- Named respjson.Field
- Opacity respjson.Field
- Original respjson.Field
- Overlay respjson.Field
- Page respjson.Field
- Progressive respjson.Field
- Quality respjson.Field
- Radius respjson.Field
- Raw respjson.Field
- Rotation respjson.Field
- Shadow respjson.Field
- Sharpen respjson.Field
- StartOffset respjson.Field
- StreamingResolutions respjson.Field
- Trim respjson.Field
- UnsharpMask respjson.Field
- VideoCodec respjson.Field
- Width respjson.Field
- X respjson.Field
- XCenter respjson.Field
- Y respjson.Field
- YCenter respjson.Field
- Zoom respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
-}
-
-// Returns the unmodified JSON received from the API
-func (r Transformation) RawJSON() string { return r.JSON.raw }
-func (r *Transformation) UnmarshalJSON(data []byte) error {
+ YCenter TransformationYCenterUnionParam `json:"yCenter,omitzero"`
+ paramObj
+}
+
+func (r TransformationParam) MarshalJSON() (data []byte, err error) {
+ type shadow TransformationParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
+func (r *TransformationParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
-// TransformationAIDropShadowUnion contains all possible properties and values from
-// [bool], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
-//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfTransformationAIDropShadowBoolean OfString]
-type TransformationAIDropShadowUnion struct {
- // This field will be present if the value is a [bool] instead of an object.
- OfTransformationAIDropShadowBoolean bool `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfTransformationAIDropShadowBoolean respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationAIDropShadowUnion) AsTransformationAIDropShadowBoolean() (v bool) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func init() {
+ apijson.RegisterFieldValidator[TransformationParam](
+ "aiRemoveBackground", true,
+ )
+ apijson.RegisterFieldValidator[TransformationParam](
+ "aiRemoveBackgroundExternal", true,
+ )
+ apijson.RegisterFieldValidator[TransformationParam](
+ "aiRetouch", true,
+ )
+ apijson.RegisterFieldValidator[TransformationParam](
+ "aiUpscale", true,
+ )
+ apijson.RegisterFieldValidator[TransformationParam](
+ "aiVariation", true,
+ )
+ apijson.RegisterFieldValidator[TransformationParam](
+ "contrastStretch", true,
+ )
+ apijson.RegisterFieldValidator[TransformationParam](
+ "grayscale", true,
+ )
}
-func (u TransformationAIDropShadowUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Only one field can be non-zero.
+//
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationAIDropShadowUnionParam struct {
+ // Construct this variant with constant.ValueOf[bool]()
+ OfTransformationAIDropShadowBoolean param.Opt[bool] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-// Returns the unmodified JSON received from the API
-func (u TransformationAIDropShadowUnion) RawJSON() string { return u.JSON.raw }
+func (u TransformationAIDropShadowUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfTransformationAIDropShadowBoolean, u.OfString)
+}
+func (u *TransformationAIDropShadowUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
+}
-func (r *TransformationAIDropShadowUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationAIDropShadowUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfTransformationAIDropShadowBoolean) {
+ return &u.OfTransformationAIDropShadowBoolean
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
type TransformationAIDropShadowBoolean bool
@@ -2010,40 +1608,29 @@ const (
TransformationAIDropShadowBooleanTrue TransformationAIDropShadowBoolean = true
)
-// TransformationAspectRatioUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationAspectRatioUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationAspectRatioUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationAspectRatioUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationAspectRatioUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationAspectRatioUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationAspectRatioUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationAspectRatioUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationAspectRatioUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationAspectRatioUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
// Specifies the audio codec, e.g., `aac`, `opus`, or `none`. See
@@ -2078,76 +1665,54 @@ const (
TransformationCropModePadExtract TransformationCropMode = "pad_extract"
)
-// TransformationDurationUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationDurationUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationDurationUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationDurationUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationDurationUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationDurationUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationDurationUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationDurationUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationDurationUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationDurationUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TransformationEndOffsetUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationEndOffsetUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationEndOffsetUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationEndOffsetUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationEndOffsetUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationEndOffsetUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationEndOffsetUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationEndOffsetUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationEndOffsetUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationEndOffsetUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
// Flips or mirrors an image either horizontally, vertically, or both. Acceptable
@@ -2185,40 +1750,30 @@ const (
TransformationFormatOrig TransformationFormat = "orig"
)
-// TransformationGradientUnion contains all possible properties and values from
-// [bool], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfTransformationGradientBoolean OfString]
-type TransformationGradientUnion struct {
- // This field will be present if the value is a [bool] instead of an object.
- OfTransformationGradientBoolean bool `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfTransformationGradientBoolean respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationGradientUnion) AsTransformationGradientBoolean() (v bool) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationGradientUnionParam struct {
+ // Construct this variant with constant.ValueOf[bool]()
+ OfTransformationGradientBoolean param.Opt[bool] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationGradientUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationGradientUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfTransformationGradientBoolean, u.OfString)
+}
+func (u *TransformationGradientUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationGradientUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationGradientUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationGradientUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfTransformationGradientBoolean) {
+ return &u.OfTransformationGradientBoolean
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
type TransformationGradientBoolean bool
@@ -2227,185 +1782,131 @@ const (
TransformationGradientBooleanTrue TransformationGradientBoolean = true
)
-// TransformationHeightUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationHeightUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationHeightUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationHeightUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationHeightUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationHeightUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationHeightUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationHeightUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationHeightUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationHeightUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TransformationPageUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationPageUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationPageUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationPageUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationPageUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationPageUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationPageUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationPageUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationPageUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationPageUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TransformationRadiusUnion contains all possible properties and values from
-// [float64], [constant.Max].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfMax]
-type TransformationRadiusUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [constant.Max] instead of an
- // object.
- OfMax constant.Max `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfMax respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationRadiusUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationRadiusUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ // Construct this variant with constant.ValueOf[constant.Max]()
+ OfMax constant.Max `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationRadiusUnion) AsMax() (v constant.Max) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationRadiusUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfMax)
+}
+func (u *TransformationRadiusUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationRadiusUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationRadiusUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationRadiusUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfMax) {
+ return &u.OfMax
+ }
+ return nil
}
-// TransformationRotationUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationRotationUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationRotationUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationRotationUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationRotationUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationRotationUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationRotationUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationRotationUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationRotationUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationRotationUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TransformationShadowUnion contains all possible properties and values from
-// [bool], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfTransformationShadowBoolean OfString]
-type TransformationShadowUnion struct {
- // This field will be present if the value is a [bool] instead of an object.
- OfTransformationShadowBoolean bool `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfTransformationShadowBoolean respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationShadowUnion) AsTransformationShadowBoolean() (v bool) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationShadowUnionParam struct {
+ // Construct this variant with constant.ValueOf[bool]()
+ OfTransformationShadowBoolean param.Opt[bool] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationShadowUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationShadowUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfTransformationShadowBoolean, u.OfString)
+}
+func (u *TransformationShadowUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationShadowUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationShadowUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationShadowUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfTransformationShadowBoolean) {
+ return &u.OfTransformationShadowBoolean
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
type TransformationShadowBoolean bool
@@ -2414,40 +1915,30 @@ const (
TransformationShadowBooleanTrue TransformationShadowBoolean = true
)
-// TransformationSharpenUnion contains all possible properties and values from
-// [bool], [float64].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfTransformationSharpenBoolean OfFloat]
-type TransformationSharpenUnion struct {
- // This field will be present if the value is a [bool] instead of an object.
- OfTransformationSharpenBoolean bool `json:",inline"`
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- JSON struct {
- OfTransformationSharpenBoolean respjson.Field
- OfFloat respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationSharpenUnion) AsTransformationSharpenBoolean() (v bool) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationSharpenUnionParam struct {
+ // Construct this variant with constant.ValueOf[bool]()
+ OfTransformationSharpenBoolean param.Opt[bool] `json:",omitzero,inline"`
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationSharpenUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationSharpenUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfTransformationSharpenBoolean, u.OfFloat)
+}
+func (u *TransformationSharpenUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationSharpenUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationSharpenUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationSharpenUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfTransformationSharpenBoolean) {
+ return &u.OfTransformationSharpenBoolean
+ } else if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ }
+ return nil
}
type TransformationSharpenBoolean bool
@@ -2456,76 +1947,55 @@ const (
TransformationSharpenBooleanTrue TransformationSharpenBoolean = true
)
-// TransformationStartOffsetUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationStartOffsetUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationStartOffsetUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationStartOffsetUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationStartOffsetUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationStartOffsetUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationStartOffsetUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationStartOffsetUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationStartOffsetUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationStartOffsetUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TransformationTrimUnion contains all possible properties and values from [bool],
-// [float64].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfTransformationTrimBoolean OfFloat]
-type TransformationTrimUnion struct {
- // This field will be present if the value is a [bool] instead of an object.
- OfTransformationTrimBoolean bool `json:",inline"`
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- JSON struct {
- OfTransformationTrimBoolean respjson.Field
- OfFloat respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationTrimUnion) AsTransformationTrimBoolean() (v bool) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationTrimUnionParam struct {
+ // Construct this variant with constant.ValueOf[bool]()
+ OfTransformationTrimBoolean param.Opt[bool] `json:",omitzero,inline"`
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationTrimUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationTrimUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfTransformationTrimBoolean, u.OfFloat)
+}
+func (u *TransformationTrimUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationTrimUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationTrimUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationTrimUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfTransformationTrimBoolean) {
+ return &u.OfTransformationTrimBoolean
+ } else if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ }
+ return nil
}
type TransformationTrimBoolean bool
@@ -2534,40 +2004,30 @@ const (
TransformationTrimBooleanTrue TransformationTrimBoolean = true
)
-// TransformationUnsharpMaskUnion contains all possible properties and values from
-// [bool], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfTransformationUnsharpMaskBoolean OfString]
-type TransformationUnsharpMaskUnion struct {
- // This field will be present if the value is a [bool] instead of an object.
- OfTransformationUnsharpMaskBoolean bool `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfTransformationUnsharpMaskBoolean respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationUnsharpMaskUnion) AsTransformationUnsharpMaskBoolean() (v bool) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationUnsharpMaskUnionParam struct {
+ // Construct this variant with constant.ValueOf[bool]()
+ OfTransformationUnsharpMaskBoolean param.Opt[bool] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationUnsharpMaskUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationUnsharpMaskUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfTransformationUnsharpMaskBoolean, u.OfString)
+}
+func (u *TransformationUnsharpMaskUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationUnsharpMaskUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationUnsharpMaskUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationUnsharpMaskUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfTransformationUnsharpMaskBoolean) {
+ return &u.OfTransformationUnsharpMaskBoolean
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
type TransformationUnsharpMaskBoolean bool
@@ -2587,184 +2047,129 @@ const (
TransformationVideoCodecNone TransformationVideoCodec = "none"
)
-// TransformationWidthUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationWidthUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationWidthUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationWidthUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationWidthUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationWidthUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationWidthUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationWidthUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationWidthUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationWidthUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TransformationXUnion contains all possible properties and values from [float64],
-// [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationXUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationXUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationXUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationXUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationXUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationXUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationXUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationXUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationXUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TransformationXCenterUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationXCenterUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationXCenterUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationXCenterUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationXCenterUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationXCenterUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationXCenterUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationXCenterUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationXCenterUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationXCenterUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TransformationYUnion contains all possible properties and values from [float64],
-// [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationYUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationYUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationYUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationYUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationYUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationYUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationYUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationYUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationYUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
-// TransformationYCenterUnion contains all possible properties and values from
-// [float64], [string].
-//
-// Use the methods beginning with 'As' to cast the union to one of its variants.
+// Only one field can be non-zero.
//
-// If the underlying value is not a json object, one of the following properties
-// will be valid: OfFloat OfString]
-type TransformationYCenterUnion struct {
- // This field will be present if the value is a [float64] instead of an object.
- OfFloat float64 `json:",inline"`
- // This field will be present if the value is a [string] instead of an object.
- OfString string `json:",inline"`
- JSON struct {
- OfFloat respjson.Field
- OfString respjson.Field
- raw string
- } `json:"-"`
-}
-
-func (u TransformationYCenterUnion) AsFloat() (v float64) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+// Use [param.IsOmitted] to confirm if a field is set.
+type TransformationYCenterUnionParam struct {
+ OfFloat param.Opt[float64] `json:",omitzero,inline"`
+ OfString param.Opt[string] `json:",omitzero,inline"`
+ paramUnion
}
-func (u TransformationYCenterUnion) AsString() (v string) {
- apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
- return
+func (u TransformationYCenterUnionParam) MarshalJSON() ([]byte, error) {
+ return param.MarshalUnion(u, u.OfFloat, u.OfString)
+}
+func (u *TransformationYCenterUnionParam) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, u)
}
-// Returns the unmodified JSON received from the API
-func (u TransformationYCenterUnion) RawJSON() string { return u.JSON.raw }
-
-func (r *TransformationYCenterUnion) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+func (u *TransformationYCenterUnionParam) asAny() any {
+ if !param.IsOmitted(u.OfFloat) {
+ return &u.OfFloat.Value
+ } else if !param.IsOmitted(u.OfString) {
+ return &u.OfString.Value
+ }
+ return nil
}
// By default, the transformation string is added as a query parameter in the URL,
@@ -2778,7 +2183,7 @@ const (
TransformationPositionQuery TransformationPosition = "query"
)
-type VideoOverlay struct {
+type VideoOverlayParam struct {
// Specifies the relative path to the video used as an overlay.
Input string `json:"input,required"`
Type constant.Video `json:"type,required"`
@@ -2787,29 +2192,15 @@ type VideoOverlay struct {
// format automatically. To always use base64 encoding (`ie-{base64}`), set this
// parameter to `base64`. To always use plain text (`i-{input}`), set it to
// `plain`.
- //
- // Any of "auto", "plain", "base64".
- Encoding string `json:"encoding"`
+ Encoding string `json:"encoding,omitzero"`
// Array of transformation to be applied to the overlay video. Except
// `streamingResolutions`, all other video transformations are supported. See
// [Video transformations](https://imagekit.io/docs/video-transformation).
- Transformation []Transformation `json:"transformation"`
- // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
- JSON struct {
- Input respjson.Field
- Type respjson.Field
- Encoding respjson.Field
- Transformation respjson.Field
- ExtraFields map[string]respjson.Field
- raw string
- } `json:"-"`
- BaseOverlay
-}
-
-// Returns the unmodified JSON received from the API
-func (r VideoOverlay) RawJSON() string { return r.JSON.raw }
-func (r *VideoOverlay) UnmarshalJSON(data []byte) error {
- return apijson.UnmarshalRoot(data, r)
+ Transformation []TransformationParam `json:"transformation,omitzero"`
+ BaseOverlayParam
}
-func (VideoOverlay) ImplOverlayUnion() {}
+func (r VideoOverlayParam) MarshalJSON() (data []byte, err error) {
+ type shadow VideoOverlayParam
+ return param.MarshalObject(r, (*shadow)(&r))
+}
From cad8a05b68464509d9d7527819bad4b4b5c3a8cd Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 30 Oct 2025 05:31:57 +0000
Subject: [PATCH 03/27] codegen metadata
---
.stats.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.stats.yml b/.stats.yml
index 29960c9..ebaf2b6 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 43
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml
openapi_spec_hash: a9aa620376fce66532c84f9364209b0b
-config_hash: bb7229ef61cee50cd6c1ac02a5a74e81
+config_hash: d7961ccc7e3cafdf8f56d6c89c3c7d62
From 99a589290787cb8cb0963373179aaa3f4882e0e2 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 30 Oct 2025 05:32:48 +0000
Subject: [PATCH 04/27] codegen metadata
---
.stats.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.stats.yml b/.stats.yml
index ebaf2b6..1eb6586 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 43
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml
openapi_spec_hash: a9aa620376fce66532c84f9364209b0b
-config_hash: d7961ccc7e3cafdf8f56d6c89c3c7d62
+config_hash: c2c1c0a5c85d678e5aa8996f3637b616
From 071999630797a525d72ef80812d5dad483045f2a Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 30 Oct 2025 05:45:26 +0000
Subject: [PATCH 05/27] codegen metadata
---
.stats.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.stats.yml b/.stats.yml
index 1eb6586..d6c1bf6 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 43
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml
openapi_spec_hash: a9aa620376fce66532c84f9364209b0b
-config_hash: c2c1c0a5c85d678e5aa8996f3637b616
+config_hash: eb4cf65a4c6b26a2901076eff5810d5d
From d7d4c829ebccafd1242d79a03651f1189c9f24d0 Mon Sep 17 00:00:00 2001
From: Manu Chaudhary
Date: Sat, 1 Nov 2025 18:12:43 +0000
Subject: [PATCH 06/27] fix(docs): update go get command to include version
path in README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 58286aa..779b2c5 100644
--- a/README.md
+++ b/README.md
@@ -59,7 +59,7 @@ Or to pin the version:
```sh
-go get -u 'github.com/imagekit-developer/imagekit-go@v2.0.0'
+go get -u 'github.com/imagekit-developer/imagekit-go/v2@v2.0.0'
```
From e35e1922f7ad2541ed116db557bcedd8c9c088de Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 3 Nov 2025 16:11:22 +0000
Subject: [PATCH 07/27] chore(internal): grammar fix (it's -> its)
---
README.md | 2 +-
packages/respjson/respjson.go | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 779b2c5..34d8723 100644
--- a/README.md
+++ b/README.md
@@ -167,7 +167,7 @@ custom := param.Override[imagekit.FooParams](12)
### Request unions
-Unions are represented as a struct with fields prefixed by "Of" for each of it's variants,
+Unions are represented as a struct with fields prefixed by "Of" for each of its variants,
only one field can be non-zero. The non-zero field will be serialized.
Sub-properties of the union can be accessed via methods on the union struct.
diff --git a/packages/respjson/respjson.go b/packages/respjson/respjson.go
index cc0088c..9e61c5c 100644
--- a/packages/respjson/respjson.go
+++ b/packages/respjson/respjson.go
@@ -5,7 +5,7 @@ package respjson
// Use [Field.Valid] to check if an optional value was null or omitted.
//
// A Field will always occur in the following structure, where it
-// mirrors the original field in it's parent struct:
+// mirrors the original field in its parent struct:
//
// type ExampleObject struct {
// Foo bool `json:"foo"`
From 87ad44d7016dcb641158e26cc4f0d08e89770dc5 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 11 Nov 2025 06:22:47 +0000
Subject: [PATCH 08/27] chore: bump gjson version
---
go.mod | 2 +-
go.sum | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/go.mod b/go.mod
index 11f9670..17ccd85 100644
--- a/go.mod
+++ b/go.mod
@@ -4,7 +4,7 @@ go 1.22
require (
github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20250711233419-a173a6c0125c
- github.com/tidwall/gjson v1.14.4
+ github.com/tidwall/gjson v1.18.0
github.com/tidwall/sjson v1.2.5
)
diff --git a/go.sum b/go.sum
index 318dc77..36b5a79 100644
--- a/go.sum
+++ b/go.sum
@@ -1,8 +1,8 @@
github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20250711233419-a173a6c0125c h1:Mm99t6GdFMtZOwyyvu3q8gXeZX0sqnjvimTC9QCJwQc=
github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20250711233419-a173a6c0125c/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo=
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
-github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM=
-github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
+github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
From 21a30a4d60b4b2da84d2314ddf6bcf76759da64d Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 18 Nov 2025 17:50:57 +0000
Subject: [PATCH 09/27] fix(client): correctly specify Accept header with */*
instead of empty
---
accountorigin.go | 2 +-
accounturlendpoint.go | 2 +-
dummy.go | 2 +-
file.go | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/accountorigin.go b/accountorigin.go
index 79a8d4a..52888b2 100644
--- a/accountorigin.go
+++ b/accountorigin.go
@@ -74,7 +74,7 @@ func (r *AccountOriginService) List(ctx context.Context, opts ...option.RequestO
// any URL‑endpoints, the API will return an error.
func (r *AccountOriginService) Delete(ctx context.Context, id string, opts ...option.RequestOption) (err error) {
opts = slices.Concat(r.Options, opts)
- opts = append([]option.RequestOption{option.WithHeader("Accept", "")}, opts...)
+ opts = append([]option.RequestOption{option.WithHeader("Accept", "*/*")}, opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
diff --git a/accounturlendpoint.go b/accounturlendpoint.go
index 7991a84..dbd0224 100644
--- a/accounturlendpoint.go
+++ b/accounturlendpoint.go
@@ -75,7 +75,7 @@ func (r *AccountURLEndpointService) List(ctx context.Context, opts ...option.Req
// URL‑endpoint created by ImageKit during account creation.
func (r *AccountURLEndpointService) Delete(ctx context.Context, id string, opts ...option.RequestOption) (err error) {
opts = slices.Concat(r.Options, opts)
- opts = append([]option.RequestOption{option.WithHeader("Accept", "")}, opts...)
+ opts = append([]option.RequestOption{option.WithHeader("Accept", "*/*")}, opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
diff --git a/dummy.go b/dummy.go
index 780af86..80449e4 100644
--- a/dummy.go
+++ b/dummy.go
@@ -38,7 +38,7 @@ func NewDummyService(opts ...option.RequestOption) (r DummyService) {
// and is not intended for public consumption.
func (r *DummyService) New(ctx context.Context, body DummyNewParams, opts ...option.RequestOption) (err error) {
opts = slices.Concat(r.Options, opts)
- opts = append([]option.RequestOption{option.WithHeader("Accept", "")}, opts...)
+ opts = append([]option.RequestOption{option.WithHeader("Accept", "*/*")}, opts...)
path := "v1/dummy/test"
err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, nil, opts...)
return
diff --git a/file.go b/file.go
index 95a44c3..a35ca04 100644
--- a/file.go
+++ b/file.go
@@ -72,7 +72,7 @@ func (r *FileService) Update(ctx context.Context, fileID string, body FileUpdate
// the cache using purge cache API.
func (r *FileService) Delete(ctx context.Context, fileID string, opts ...option.RequestOption) (err error) {
opts = slices.Concat(r.Options, opts)
- opts = append([]option.RequestOption{option.WithHeader("Accept", "")}, opts...)
+ opts = append([]option.RequestOption{option.WithHeader("Accept", "*/*")}, opts...)
if fileID == "" {
err = errors.New("missing required fileId parameter")
return
From 63165ac51ec10df842ed8f9496c82294b4f9e61e Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 2 Dec 2025 13:27:40 +0000
Subject: [PATCH 10/27] chore(internal): codegen related update
---
webhook.go | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/webhook.go b/webhook.go
index 6984cf2..192b6ca 100644
--- a/webhook.go
+++ b/webhook.go
@@ -1552,13 +1552,16 @@ func (r *VideoTransformationReadyEventTimings) UnmarshalJSON(data []byte) error
// [UploadPreTransformErrorEvent], [UploadPostTransformSuccessEvent],
// [UploadPostTransformErrorEvent].
//
+// Use the [UnsafeUnwrapWebhookEventUnion.AsAny] method to switch on the variant.
+//
// Use the methods beginning with 'As' to cast the union to one of its variants.
type UnsafeUnwrapWebhookEventUnion struct {
// This field is from variant [VideoTransformationAcceptedEvent],
// [VideoTransformationReadyEvent], [VideoTransformationErrorEvent],
// [UploadPreTransformSuccessEvent], [UploadPreTransformErrorEvent],
// [UploadPostTransformSuccessEvent], [UploadPostTransformErrorEvent].
- ID string `json:"id"`
+ ID string `json:"id"`
+ // Any of nil, nil, nil, nil, nil, nil, nil.
Type string `json:"type"`
CreatedAt time.Time `json:"created_at"`
// This field is a union of [VideoTransformationAcceptedEventData],
@@ -1890,13 +1893,16 @@ func (r *UnsafeUnwrapWebhookEventUnionRequestTransformation) UnmarshalJSON(data
// [UploadPreTransformErrorEvent], [UploadPostTransformSuccessEvent],
// [UploadPostTransformErrorEvent].
//
+// Use the [UnwrapWebhookEventUnion.AsAny] method to switch on the variant.
+//
// Use the methods beginning with 'As' to cast the union to one of its variants.
type UnwrapWebhookEventUnion struct {
// This field is from variant [VideoTransformationAcceptedEvent],
// [VideoTransformationReadyEvent], [VideoTransformationErrorEvent],
// [UploadPreTransformSuccessEvent], [UploadPreTransformErrorEvent],
// [UploadPostTransformSuccessEvent], [UploadPostTransformErrorEvent].
- ID string `json:"id"`
+ ID string `json:"id"`
+ // Any of nil, nil, nil, nil, nil, nil, nil.
Type string `json:"type"`
CreatedAt time.Time `json:"created_at"`
// This field is a union of [VideoTransformationAcceptedEventData],
From d83769df0486737f479694acc9421415fb11c523 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 5 Dec 2025 20:41:24 +0000
Subject: [PATCH 11/27] chore(internal): codegen related update
---
internal/paramutil/sentinel.go | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
create mode 100644 internal/paramutil/sentinel.go
diff --git a/internal/paramutil/sentinel.go b/internal/paramutil/sentinel.go
new file mode 100644
index 0000000..92ce9b3
--- /dev/null
+++ b/internal/paramutil/sentinel.go
@@ -0,0 +1,31 @@
+package paramutil
+
+import (
+ "github.com/imagekit-developer/imagekit-go/v2/internal/encoding/json/sentinel"
+)
+
+// NullPtr returns a pointer to the zero value of the type T.
+// When used with [MarshalObject] or [MarshalUnion], it will be marshaled as null.
+//
+// It is unspecified behavior to mutate the value pointed to by the returned pointer.
+func NullPtr[T any]() *T {
+ return sentinel.NullPtr[T]()
+}
+
+// IsNullPtr returns true if the pointer was created by [NullPtr].
+func IsNullPtr[T any](ptr *T) bool {
+ return sentinel.IsNullPtr(ptr)
+}
+
+// NullSlice returns a non-nil slice with a length of 0.
+// When used with [MarshalObject] or [MarshalUnion], it will be marshaled as null.
+//
+// It is undefined behavior to mutate the slice returned by [NullSlice].
+func NullSlice[T any]() []T {
+ return sentinel.NullSlice[T]()
+}
+
+// IsNullSlice returns true if the slice was created by [NullSlice].
+func IsNullSlice[T any](slice []T) bool {
+ return sentinel.IsNullSlice(slice)
+}
From 2f9eee11c82bd0b6641dec1f0c20042863ad169f Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 5 Dec 2025 21:16:55 +0000
Subject: [PATCH 12/27] chore: elide duplicate aliases
---
internal/paramutil/sentinel.go | 31 -------------------------------
1 file changed, 31 deletions(-)
delete mode 100644 internal/paramutil/sentinel.go
diff --git a/internal/paramutil/sentinel.go b/internal/paramutil/sentinel.go
deleted file mode 100644
index 92ce9b3..0000000
--- a/internal/paramutil/sentinel.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package paramutil
-
-import (
- "github.com/imagekit-developer/imagekit-go/v2/internal/encoding/json/sentinel"
-)
-
-// NullPtr returns a pointer to the zero value of the type T.
-// When used with [MarshalObject] or [MarshalUnion], it will be marshaled as null.
-//
-// It is unspecified behavior to mutate the value pointed to by the returned pointer.
-func NullPtr[T any]() *T {
- return sentinel.NullPtr[T]()
-}
-
-// IsNullPtr returns true if the pointer was created by [NullPtr].
-func IsNullPtr[T any](ptr *T) bool {
- return sentinel.IsNullPtr(ptr)
-}
-
-// NullSlice returns a non-nil slice with a length of 0.
-// When used with [MarshalObject] or [MarshalUnion], it will be marshaled as null.
-//
-// It is undefined behavior to mutate the slice returned by [NullSlice].
-func NullSlice[T any]() []T {
- return sentinel.NullSlice[T]()
-}
-
-// IsNullSlice returns true if the slice was created by [NullSlice].
-func IsNullSlice[T any](slice []T) bool {
- return sentinel.IsNullSlice(slice)
-}
From b32395e36a3fdd2f8e37313a303a68135f13400f Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 5 Dec 2025 23:39:17 +0000
Subject: [PATCH 13/27] fix(mcp): correct code tool API endpoint
---
internal/paramutil/sentinel.go | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
create mode 100644 internal/paramutil/sentinel.go
diff --git a/internal/paramutil/sentinel.go b/internal/paramutil/sentinel.go
new file mode 100644
index 0000000..92ce9b3
--- /dev/null
+++ b/internal/paramutil/sentinel.go
@@ -0,0 +1,31 @@
+package paramutil
+
+import (
+ "github.com/imagekit-developer/imagekit-go/v2/internal/encoding/json/sentinel"
+)
+
+// NullPtr returns a pointer to the zero value of the type T.
+// When used with [MarshalObject] or [MarshalUnion], it will be marshaled as null.
+//
+// It is unspecified behavior to mutate the value pointed to by the returned pointer.
+func NullPtr[T any]() *T {
+ return sentinel.NullPtr[T]()
+}
+
+// IsNullPtr returns true if the pointer was created by [NullPtr].
+func IsNullPtr[T any](ptr *T) bool {
+ return sentinel.IsNullPtr(ptr)
+}
+
+// NullSlice returns a non-nil slice with a length of 0.
+// When used with [MarshalObject] or [MarshalUnion], it will be marshaled as null.
+//
+// It is undefined behavior to mutate the slice returned by [NullSlice].
+func NullSlice[T any]() []T {
+ return sentinel.NullSlice[T]()
+}
+
+// IsNullSlice returns true if the slice was created by [NullSlice].
+func IsNullSlice[T any](slice []T) bool {
+ return sentinel.IsNullSlice(slice)
+}
From 5067fd4adfe3a7108f3799f270c4211ade385882 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 5 Dec 2025 23:43:40 +0000
Subject: [PATCH 14/27] fix: rename param to avoid collision
---
internal/paramutil/sentinel.go | 31 -------------------------------
1 file changed, 31 deletions(-)
delete mode 100644 internal/paramutil/sentinel.go
diff --git a/internal/paramutil/sentinel.go b/internal/paramutil/sentinel.go
deleted file mode 100644
index 92ce9b3..0000000
--- a/internal/paramutil/sentinel.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package paramutil
-
-import (
- "github.com/imagekit-developer/imagekit-go/v2/internal/encoding/json/sentinel"
-)
-
-// NullPtr returns a pointer to the zero value of the type T.
-// When used with [MarshalObject] or [MarshalUnion], it will be marshaled as null.
-//
-// It is unspecified behavior to mutate the value pointed to by the returned pointer.
-func NullPtr[T any]() *T {
- return sentinel.NullPtr[T]()
-}
-
-// IsNullPtr returns true if the pointer was created by [NullPtr].
-func IsNullPtr[T any](ptr *T) bool {
- return sentinel.IsNullPtr(ptr)
-}
-
-// NullSlice returns a non-nil slice with a length of 0.
-// When used with [MarshalObject] or [MarshalUnion], it will be marshaled as null.
-//
-// It is undefined behavior to mutate the slice returned by [NullSlice].
-func NullSlice[T any]() []T {
- return sentinel.NullSlice[T]()
-}
-
-// IsNullSlice returns true if the slice was created by [NullSlice].
-func IsNullSlice[T any](slice []T) bool {
- return sentinel.IsNullSlice(slice)
-}
From e179dee2cb4fb116cdc591830f3dbb4738c30182 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 8 Dec 2025 09:57:59 +0000
Subject: [PATCH 15/27] codegen metadata
---
.stats.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.stats.yml b/.stats.yml
index d6c1bf6..b574a91 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 43
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml
openapi_spec_hash: a9aa620376fce66532c84f9364209b0b
-config_hash: eb4cf65a4c6b26a2901076eff5810d5d
+config_hash: 10b48f323ed534664483af1952174d52
From 7e5d4fc2f0a02e324450084db5b39e2c84bb2d8f Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 8 Dec 2025 12:31:31 +0000
Subject: [PATCH 16/27] codegen metadata
---
.stats.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.stats.yml b/.stats.yml
index b574a91..a0c1a4e 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 43
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml
openapi_spec_hash: a9aa620376fce66532c84f9364209b0b
-config_hash: 10b48f323ed534664483af1952174d52
+config_hash: fd112bd17c0c8e9f81a50d0e15ea70d6
From 8877b4fbdce39a56785613a1172dda44399c6fe7 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 10 Dec 2025 19:15:26 +0000
Subject: [PATCH 17/27] chore(internal): codegen related update
---
go.mod | 2 +-
go.sum | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/go.mod b/go.mod
index 17ccd85..a0e1ba6 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,7 @@ module github.com/imagekit-developer/imagekit-go/v2
go 1.22
require (
- github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20250711233419-a173a6c0125c
+ github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20251210175704-b03a68fe8b19
github.com/tidwall/gjson v1.18.0
github.com/tidwall/sjson v1.2.5
)
diff --git a/go.sum b/go.sum
index 36b5a79..f1261e2 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,5 @@
-github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20250711233419-a173a6c0125c h1:Mm99t6GdFMtZOwyyvu3q8gXeZX0sqnjvimTC9QCJwQc=
-github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20250711233419-a173a6c0125c/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo=
+github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20251210175704-b03a68fe8b19 h1:8rMUmsyom6y/10iTAgqkfv8zHVKxVQxFwlOb42V23cA=
+github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20251210175704-b03a68fe8b19/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo=
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
From cb3e5572b00fe978ee93d595cc4d8775edccbc89 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 11 Dec 2025 15:59:19 +0000
Subject: [PATCH 18/27] feat(encoder): support bracket encoding form-data
object members
---
internal/apiform/encoder.go | 80 +++++++++++++++++++----------------
internal/apiform/form_test.go | 51 +++++++++++++++++++++-
2 files changed, 94 insertions(+), 37 deletions(-)
diff --git a/internal/apiform/encoder.go b/internal/apiform/encoder.go
index 1d6afb2..58f5621 100644
--- a/internal/apiform/encoder.go
+++ b/internal/apiform/encoder.go
@@ -60,6 +60,7 @@ type encoderField struct {
type encoderEntry struct {
reflect.Type
dateFormat string
+ arrayFmt string
root bool
}
@@ -77,6 +78,7 @@ func (e *encoder) typeEncoder(t reflect.Type) encoderFunc {
entry := encoderEntry{
Type: t,
dateFormat: e.dateFormat,
+ arrayFmt: e.arrayFmt,
root: e.root,
}
@@ -178,34 +180,9 @@ func (e *encoder) newPrimitiveTypeEncoder(t reflect.Type) encoderFunc {
}
}
-func arrayKeyEncoder(arrayFmt string) func(string, int) string {
- var keyFn func(string, int) string
- switch arrayFmt {
- case "comma", "repeat":
- keyFn = func(k string, _ int) string { return k }
- case "brackets":
- keyFn = func(key string, _ int) string { return key + "[]" }
- case "indices:dots":
- keyFn = func(k string, i int) string {
- if k == "" {
- return strconv.Itoa(i)
- }
- return k + "." + strconv.Itoa(i)
- }
- case "indices:brackets":
- keyFn = func(k string, i int) string {
- if k == "" {
- return strconv.Itoa(i)
- }
- return k + "[" + strconv.Itoa(i) + "]"
- }
- }
- return keyFn
-}
-
func (e *encoder) newArrayTypeEncoder(t reflect.Type) encoderFunc {
itemEncoder := e.typeEncoder(t.Elem())
- keyFn := arrayKeyEncoder(e.arrayFmt)
+ keyFn := e.arrayKeyEncoder()
return func(key string, v reflect.Value, writer *multipart.Writer) error {
if keyFn == nil {
return fmt.Errorf("apiform: unsupported array format")
@@ -303,13 +280,10 @@ func (e *encoder) newStructTypeEncoder(t reflect.Type) encoderFunc {
})
return func(key string, value reflect.Value, writer *multipart.Writer) error {
- if key != "" {
- key = key + "."
- }
-
+ keyFn := e.objKeyEncoder(key)
for _, ef := range encoderFields {
field := value.FieldByIndex(ef.idx)
- err := ef.fn(key+ef.tag.name, field, writer)
+ err := ef.fn(keyFn(ef.tag.name), field, writer)
if err != nil {
return err
}
@@ -405,6 +379,43 @@ func (e *encoder) newReaderTypeEncoder() encoderFunc {
}
}
+func (e encoder) arrayKeyEncoder() func(string, int) string {
+ var keyFn func(string, int) string
+ switch e.arrayFmt {
+ case "comma", "repeat":
+ keyFn = func(k string, _ int) string { return k }
+ case "brackets":
+ keyFn = func(key string, _ int) string { return key + "[]" }
+ case "indices:dots":
+ keyFn = func(k string, i int) string {
+ if k == "" {
+ return strconv.Itoa(i)
+ }
+ return k + "." + strconv.Itoa(i)
+ }
+ case "indices:brackets":
+ keyFn = func(k string, i int) string {
+ if k == "" {
+ return strconv.Itoa(i)
+ }
+ return k + "[" + strconv.Itoa(i) + "]"
+ }
+ }
+ return keyFn
+}
+
+func (e encoder) objKeyEncoder(parent string) func(string) string {
+ if parent == "" {
+ return func(child string) string { return child }
+ }
+ switch e.arrayFmt {
+ case "brackets":
+ return func(child string) string { return parent + "[" + child + "]" }
+ default:
+ return func(child string) string { return parent + "." + child }
+ }
+}
+
// Given a []byte of json (may either be an empty object or an object that already contains entries)
// encode all of the entries in the map to the json byte array.
func (e *encoder) encodeMapEntries(key string, v reflect.Value, writer *multipart.Writer) error {
@@ -413,10 +424,6 @@ func (e *encoder) encodeMapEntries(key string, v reflect.Value, writer *multipar
value reflect.Value
}
- if key != "" {
- key = key + "."
- }
-
pairs := []mapPair{}
iter := v.MapRange()
@@ -434,8 +441,9 @@ func (e *encoder) encodeMapEntries(key string, v reflect.Value, writer *multipar
})
elementEncoder := e.typeEncoder(v.Type().Elem())
+ keyFn := e.objKeyEncoder(key)
for _, p := range pairs {
- err := elementEncoder(key+string(p.key), p.value, writer)
+ err := elementEncoder(keyFn(p.key), p.value, writer)
if err != nil {
return err
}
diff --git a/internal/apiform/form_test.go b/internal/apiform/form_test.go
index 3b95794..86cb43d 100644
--- a/internal/apiform/form_test.go
+++ b/internal/apiform/form_test.go
@@ -123,6 +123,18 @@ type StructUnion struct {
param.APIUnion
}
+type MultipartMarshalerParent struct {
+ Middle MultipartMarshalerMiddleNext `form:"middle"`
+}
+
+type MultipartMarshalerMiddleNext struct {
+ MiddleNext MultipartMarshalerMiddle `form:"middleNext"`
+}
+
+type MultipartMarshalerMiddle struct {
+ Child int `form:"child"`
+}
+
var tests = map[string]struct {
buf string
val any
@@ -366,6 +378,19 @@ true
},
},
},
+ "recursive_struct,brackets": {
+ `--xxx
+Content-Disposition: form-data; name="child[name]"
+
+Alex
+--xxx
+Content-Disposition: form-data; name="name"
+
+Robert
+--xxx--
+`,
+ Recursive{Name: "Robert", Child: &Recursive{Name: "Alex"}},
+ },
"recursive_struct": {
`--xxx
@@ -529,6 +554,30 @@ Content-Disposition: form-data; name="union"
Union: UnionTime(time.Date(2010, 05, 23, 0, 0, 0, 0, time.UTC)),
},
},
+ "deeply-nested-struct,brackets": {
+ `--xxx
+Content-Disposition: form-data; name="middle[middleNext][child]"
+
+10
+--xxx--
+`,
+ MultipartMarshalerParent{
+ Middle: MultipartMarshalerMiddleNext{
+ MiddleNext: MultipartMarshalerMiddle{
+ Child: 10,
+ },
+ },
+ },
+ },
+ "deeply-nested-map,brackets": {
+ `--xxx
+Content-Disposition: form-data; name="middle[middleNext][child]"
+
+10
+--xxx--
+`,
+ map[string]any{"middle": map[string]any{"middleNext": map[string]any{"child": 10}}},
+ },
}
func TestEncode(t *testing.T) {
@@ -553,7 +602,7 @@ func TestEncode(t *testing.T) {
}
raw := buf.Bytes()
if string(raw) != strings.ReplaceAll(test.buf, "\n", "\r\n") {
- t.Errorf("expected %+#v to serialize to '%s' but got '%s'", test.val, test.buf, string(raw))
+ t.Errorf("expected %+#v to serialize to '%s' but got '%s' (with format %s)", test.val, test.buf, string(raw), arrayFmt)
}
})
}
From 9793b6c5e8be6e2913e02517746454646321ba4c Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 12 Dec 2025 11:53:46 +0000
Subject: [PATCH 19/27] codegen metadata
---
.stats.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.stats.yml b/.stats.yml
index a0c1a4e..26cba71 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 43
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml
openapi_spec_hash: a9aa620376fce66532c84f9364209b0b
-config_hash: fd112bd17c0c8e9f81a50d0e15ea70d6
+config_hash: 2a4d7992f6d3a0db0e9a430d513d94e6
From 579adefb3e190a4b2304d780bdac6180473e2095 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 12 Dec 2025 11:54:40 +0000
Subject: [PATCH 20/27] codegen metadata
---
.stats.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.stats.yml b/.stats.yml
index 26cba71..f9a8004 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 43
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml
openapi_spec_hash: a9aa620376fce66532c84f9364209b0b
-config_hash: 2a4d7992f6d3a0db0e9a430d513d94e6
+config_hash: b4f610d4f53fe5bb17b35cf77a7521ea
From 817cb617f4410e3c7491ff96947f9beaee2df4ad Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 12 Dec 2025 12:00:43 +0000
Subject: [PATCH 21/27] codegen metadata
---
.stats.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.stats.yml b/.stats.yml
index f9a8004..333dfb4 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 43
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml
openapi_spec_hash: a9aa620376fce66532c84f9364209b0b
-config_hash: b4f610d4f53fe5bb17b35cf77a7521ea
+config_hash: 71cab8223bb5610c6c7ca6e9c4cc1f89
From 429ad75eb8c267b44a9c8e4f2c542344189563e3 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 17 Dec 2025 17:13:06 +0000
Subject: [PATCH 22/27] fix: skip usage tests that don't work with Prism
---
usage_test.go | 1 +
1 file changed, 1 insertion(+)
diff --git a/usage_test.go b/usage_test.go
index 9e38cfd..6792db9 100644
--- a/usage_test.go
+++ b/usage_test.go
@@ -27,6 +27,7 @@ func TestUsage(t *testing.T) {
option.WithPrivateKey("My Private Key"),
option.WithPassword("My Password"),
)
+ t.Skip("Prism tests are disabled")
response, err := client.Files.Upload(context.TODO(), imagekit.FileUploadParams{
File: io.Reader(bytes.NewBuffer([]byte("https://www.example.com/public-url.jpg"))),
FileName: "file-name.jpg",
From 2dc3cae63386dc6b8c7743af3fdb0a9c4ed93ef5 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 18 Dec 2025 10:52:24 +0000
Subject: [PATCH 23/27] chore: add float64 to valid types for
RegisterFieldValidator
---
internal/apijson/enum.go | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/internal/apijson/enum.go b/internal/apijson/enum.go
index 18b218a..5bef11c 100644
--- a/internal/apijson/enum.go
+++ b/internal/apijson/enum.go
@@ -29,7 +29,7 @@ type validatorFunc func(reflect.Value) exactness
var validators sync.Map
var validationRegistry = map[reflect.Type][]validationEntry{}
-func RegisterFieldValidator[T any, V string | bool | int](fieldName string, values ...V) {
+func RegisterFieldValidator[T any, V string | bool | int | float64](fieldName string, values ...V) {
var t T
parentType := reflect.TypeOf(t)
From e55e614fab629dfab68d7249e53ef602dd1a36b3 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 19 Dec 2025 09:13:52 +0000
Subject: [PATCH 24/27] fix(client): properly marshal embedded structs
---
shared/shared.go | 42 ++++++++++++++++++++++++++++++------------
1 file changed, 30 insertions(+), 12 deletions(-)
diff --git a/shared/shared.go b/shared/shared.go
index a85359a..98859b1 100644
--- a/shared/shared.go
+++ b/shared/shared.go
@@ -233,8 +233,11 @@ type GetImageAttributesOptionsParam struct {
}
func (r GetImageAttributesOptionsParam) MarshalJSON() (data []byte, err error) {
- type shadow GetImageAttributesOptionsParam
- return param.MarshalObject(r, (*shadow)(&r))
+ type shadow struct {
+ *GetImageAttributesOptionsParam
+ MarshalJSON bool `json:"-"` // Prevent inheriting [json.Marshaler] from the embedded field
+ }
+ return param.MarshalObject(r, shadow{&r, false})
}
type ImageOverlayParam struct {
@@ -257,8 +260,11 @@ type ImageOverlayParam struct {
}
func (r ImageOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow ImageOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
+ type shadow struct {
+ *ImageOverlayParam
+ MarshalJSON bool `json:"-"` // Prevent inheriting [json.Marshaler] from the embedded field
+ }
+ return param.MarshalObject(r, shadow{&r, false})
}
func OverlayParamOfText(text string) OverlayUnionParam {
@@ -707,8 +713,11 @@ type SolidColorOverlayParam struct {
}
func (r SolidColorOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow SolidColorOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
+ type shadow struct {
+ *SolidColorOverlayParam
+ MarshalJSON bool `json:"-"` // Prevent inheriting [json.Marshaler] from the embedded field
+ }
+ return param.MarshalObject(r, shadow{&r, false})
}
type SolidColorOverlayTransformationParam struct {
@@ -941,8 +950,11 @@ type SubtitleOverlayParam struct {
}
func (r SubtitleOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow SubtitleOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
+ type shadow struct {
+ *SubtitleOverlayParam
+ MarshalJSON bool `json:"-"` // Prevent inheriting [json.Marshaler] from the embedded field
+ }
+ return param.MarshalObject(r, shadow{&r, false})
}
// Subtitle styling options.
@@ -1031,8 +1043,11 @@ type TextOverlayParam struct {
}
func (r TextOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow TextOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
+ type shadow struct {
+ *TextOverlayParam
+ MarshalJSON bool `json:"-"` // Prevent inheriting [json.Marshaler] from the embedded field
+ }
+ return param.MarshalObject(r, shadow{&r, false})
}
type TextOverlayTransformationParam struct {
@@ -2201,6 +2216,9 @@ type VideoOverlayParam struct {
}
func (r VideoOverlayParam) MarshalJSON() (data []byte, err error) {
- type shadow VideoOverlayParam
- return param.MarshalObject(r, (*shadow)(&r))
+ type shadow struct {
+ *VideoOverlayParam
+ MarshalJSON bool `json:"-"` // Prevent inheriting [json.Marshaler] from the embedded field
+ }
+ return param.MarshalObject(r, shadow{&r, false})
}
From 2fdd961c6a458140239af2e88cf1b1ecf7dc27f2 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 5 Jan 2026 04:05:29 +0000
Subject: [PATCH 25/27] chore(internal): codegen related update
---
LICENSE | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
index e7a4d16..2027861 100644
--- a/LICENSE
+++ b/LICENSE
@@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
- Copyright 2025 Image Kit
+ Copyright 2026 Image Kit
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
From e2a2d9047c24a8fd32471aaf96315cad0bd9f935 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 5 Jan 2026 20:49:10 +0000
Subject: [PATCH 26/27] docs: prominently feature MCP server setup in root SDK
readmes
---
README.md | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/README.md b/README.md
index 34d8723..1ae79ff 100644
--- a/README.md
+++ b/README.md
@@ -42,6 +42,15 @@ For additional details, refer to the [ImageKit REST API documentation](https://i
- [Semantic versioning](#semantic-versioning)
- [Contributing](#contributing)
+## MCP Server
+
+Use the Image Kit MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.
+
+[](https://cursor.com/en-US/install-mcp?name=%40imagekit%2Fapi-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBpbWFnZWtpdC9hcGktbWNwIl19)
+[](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22%40imagekit%2Fapi-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40imagekit%2Fapi-mcp%22%5D%7D)
+
+> Note: You may need to set environment variables in your MCP client.
+
## Installation
From 345d4b62f6794fb44f75257e1e12f1115bee76ad Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 5 Jan 2026 20:49:38 +0000
Subject: [PATCH 27/27] release: 2.1.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++
README.md | 2 +-
internal/version.go | 2 +-
4 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 65f558e..656a2ef 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "2.0.0"
+ ".": "2.1.0"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 488241b..c32654d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,37 @@
# Changelog
+## 2.1.0 (2026-01-05)
+
+Full Changelog: [v2.0.0...v2.1.0](https://github.com/imagekit-developer/imagekit-go/compare/v2.0.0...v2.1.0)
+
+### Features
+
+* **api:** add GetImageAttributesOptions and ResponsiveImageAttributes schemas; update resource references in main.yaml; remove dummy endpoint ([41072da](https://github.com/imagekit-developer/imagekit-go/commit/41072da63cd2ba891a911d932af3bc8b70c90588))
+* **api:** fix go sdk breaking changes ([6cbddff](https://github.com/imagekit-developer/imagekit-go/commit/6cbddffab95c89b964fc29ce119ceb70d7ebded5))
+* **encoder:** support bracket encoding form-data object members ([cb3e557](https://github.com/imagekit-developer/imagekit-go/commit/cb3e5572b00fe978ee93d595cc4d8775edccbc89))
+
+
+### Bug Fixes
+
+* **client:** correctly specify Accept header with */* instead of empty ([21a30a4](https://github.com/imagekit-developer/imagekit-go/commit/21a30a4d60b4b2da84d2314ddf6bcf76759da64d))
+* **client:** properly marshal embedded structs ([e55e614](https://github.com/imagekit-developer/imagekit-go/commit/e55e614fab629dfab68d7249e53ef602dd1a36b3))
+* **docs:** update go get command to include version path in README.md ([d7d4c82](https://github.com/imagekit-developer/imagekit-go/commit/d7d4c829ebccafd1242d79a03651f1189c9f24d0))
+* **mcp:** correct code tool API endpoint ([b32395e](https://github.com/imagekit-developer/imagekit-go/commit/b32395e36a3fdd2f8e37313a303a68135f13400f))
+* rename param to avoid collision ([5067fd4](https://github.com/imagekit-developer/imagekit-go/commit/5067fd4adfe3a7108f3799f270c4211ade385882))
+* skip usage tests that don't work with Prism ([429ad75](https://github.com/imagekit-developer/imagekit-go/commit/429ad75eb8c267b44a9c8e4f2c542344189563e3))
+
+
+### Chores
+
+* add float64 to valid types for RegisterFieldValidator ([2dc3cae](https://github.com/imagekit-developer/imagekit-go/commit/2dc3cae63386dc6b8c7743af3fdb0a9c4ed93ef5))
+* bump gjson version ([87ad44d](https://github.com/imagekit-developer/imagekit-go/commit/87ad44d7016dcb641158e26cc4f0d08e89770dc5))
+* elide duplicate aliases ([2f9eee1](https://github.com/imagekit-developer/imagekit-go/commit/2f9eee11c82bd0b6641dec1f0c20042863ad169f))
+* **internal:** codegen related update ([2fdd961](https://github.com/imagekit-developer/imagekit-go/commit/2fdd961c6a458140239af2e88cf1b1ecf7dc27f2))
+* **internal:** codegen related update ([8877b4f](https://github.com/imagekit-developer/imagekit-go/commit/8877b4fbdce39a56785613a1172dda44399c6fe7))
+* **internal:** codegen related update ([d83769d](https://github.com/imagekit-developer/imagekit-go/commit/d83769df0486737f479694acc9421415fb11c523))
+* **internal:** codegen related update ([63165ac](https://github.com/imagekit-developer/imagekit-go/commit/63165ac51ec10df842ed8f9496c82294b4f9e61e))
+* **internal:** grammar fix (it's -> its) ([e35e192](https://github.com/imagekit-developer/imagekit-go/commit/e35e1922f7ad2541ed116db557bcedd8c9c088de))
+
## 2.0.0 (2025-10-05)
Full Changelog: [v0.0.1...v2.0.0](https://github.com/imagekit-developer/imagekit-go/compare/v0.0.1...v2.0.0)
diff --git a/README.md b/README.md
index 1ae79ff..e6e4c3a 100644
--- a/README.md
+++ b/README.md
@@ -68,7 +68,7 @@ Or to pin the version:
```sh
-go get -u 'github.com/imagekit-developer/imagekit-go/v2@v2.0.0'
+go get -u 'github.com/imagekit-developer/imagekit-go/v2@v2.1.0'
```
diff --git a/internal/version.go b/internal/version.go
index fef6622..436f832 100644
--- a/internal/version.go
+++ b/internal/version.go
@@ -2,4 +2,4 @@
package internal
-const PackageVersion = "2.0.0" // x-release-please-version
+const PackageVersion = "2.1.0" // x-release-please-version