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/.stats.yml b/.stats.yml
index 96e30e1..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-c7ad6f552b38f2145781847f8b390fa1ec43068d64e45a33012a97a9299edc10.yml
-openapi_spec_hash: 50f281e91210ad5018ac7e4eee216f56
-config_hash: 74a8263b80c732a2b016177e7d56bb9c
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml
+openapi_spec_hash: a9aa620376fce66532c84f9364209b0b
+config_hash: eb4cf65a4c6b26a2901076eff5810d5d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 488241b..304a30e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,24 @@
# Changelog
+## 2.1.0 (2025-11-03)
+
+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))
+
+
+### Bug Fixes
+
+* **docs:** update go get command to include version path in README.md ([d7d4c82](https://github.com/imagekit-developer/imagekit-go/commit/d7d4c829ebccafd1242d79a03651f1189c9f24d0))
+
+
+### Chores
+
+* **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 58286aa..9e5488d 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.1.0'
```
@@ -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/aliases.go b/aliases.go
index be8fe53..33ed8d6 100644
--- a/aliases.go
+++ b/aliases.go
@@ -40,6 +40,13 @@ 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 GetImageAttributesOptionsParam = shared.GetImageAttributesOptionsParam
+
// This is an alias to an internal type.
type ImageOverlayParam = shared.ImageOverlayParam
@@ -133,6 +140,12 @@ type OverlayTimingEndUnionParam = shared.OverlayTimingEndUnionParam
// This is an alias to an internal type.
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 ResponsiveImageAttributesParam = shared.ResponsiveImageAttributesParam
+
// This is an alias to an internal type.
type SolidColorOverlayParam = shared.SolidColorOverlayParam
diff --git a/api.md b/api.md
index d1fe4eb..2589aa8 100644
--- a/api.md
+++ b/api.md
@@ -2,10 +2,12 @@
- shared.BaseOverlayParam
- shared.ExtensionsParam
+- shared.GetImageAttributesOptionsParam
- shared.ImageOverlayParam
- shared.OverlayUnionParam
- shared.OverlayPositionParam
- shared.OverlayTimingParam
+- shared.ResponsiveImageAttributesParam
- shared.SolidColorOverlayParam
- shared.SolidColorOverlayTransformationParam
- shared.SrcOptionsParam
@@ -18,6 +20,12 @@
- shared.TransformationPosition
- shared.VideoOverlayParam
+# Dummy
+
+Methods:
+
+- client.Dummy.New(ctx context.Context, body imagekit.DummyNewParams) error
+
# CustomMetadataFields
Response Types:
diff --git a/dummy.go b/dummy.go
index 9f26efb..780af86 100644
--- a/dummy.go
+++ b/dummy.go
@@ -48,15 +48,22 @@ 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"`
+ 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"`
+ 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
diff --git a/dummy_test.go b/dummy_test.go
index 0548e6a..96a9a1c 100644
--- a/dummy_test.go
+++ b/dummy_test.go
@@ -69,6 +69,168 @@ func TestDummyNewWithOptionalParams(t *testing.T) {
}, 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{
@@ -316,6 +478,12 @@ func TestDummyNewWithOptionalParams(t *testing.T) {
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{
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
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"`
diff --git a/shared/shared.go b/shared/shared.go
index 831548c..a85359a 100644
--- a/shared/shared.go
+++ b/shared/shared.go
@@ -196,6 +196,47 @@ func (r *ExtensionAIAutoDescriptionParam) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
+// 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 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,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,omitzero"`
+ // 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 param.Opt[string] `json:"sizes,omitzero"`
+ // 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 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 ImageOverlayParam struct {
// Specifies the relative path to the image used as an overlay.
Input string `json:"input,required"`
@@ -623,6 +664,32 @@ func (u *OverlayTimingStartUnionParam) asAny() any {
return nil
}
+// Resulting set of attributes suitable for an HTML `
` element. Useful for
+// enabling responsive image loading with `srcSet` and `sizes`.
+//
+// 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 param.Opt[string] `json:"sizes,omitzero"`
+ // Candidate set with `w` or `x` descriptors. Multiple image URLs separated by
+ // commas, each with a descriptor.
+ SrcSet param.Opt[string] `json:"srcSet,omitzero"`
+ // Width as a number (if `width` was provided in the input options).
+ 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 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