Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "4.3.0"
".": "4.4.0"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 47
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-63aff1629530786015da3c86131afa8a9b60545d488884b77641f1d4b89c6e9d.yml
openapi_spec_hash: 586d357bd7e5217d240a99e0d83c6d1f
config_hash: 47cb702ee2cb52c58d803ae39ade9b44
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-70c42eda2bee929830b2537f758400a58dded1f1ef5686a286e2469c35a041a0.yml
openapi_spec_hash: cdaeed824e91657b45092765cf55eb42
config_hash: 83967503e501e4199b4042d0d0f2b615
35 changes: 35 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,40 @@
# Changelog

## 4.4.0 (2026-04-13)

Full Changelog: [v4.3.0...v4.4.0](https://github.com/imagekit-developer/imagekit-ruby/compare/v4.3.0...v4.4.0)

### Features

* **api:** add missing types in ruby ([6a074df](https://github.com/imagekit-developer/imagekit-ruby/commit/6a074df0249e9ac9969c2bc4b8d12d9abbd1e233))
* **api:** dam related webhook events ([d2ffbf3](https://github.com/imagekit-developer/imagekit-ruby/commit/d2ffbf33cabaddffbb97d4c7bc7e54be100a3c67))
* **api:** fix spec indentation ([74e7a6a](https://github.com/imagekit-developer/imagekit-ruby/commit/74e7a6ae49a83d6faa29796443309f20633b430d))
* **api:** indentation fix ([fae3b74](https://github.com/imagekit-developer/imagekit-ruby/commit/fae3b74e0de1bdd3e5a29c6061f546aacfc423cb))
* **api:** merge with main to bring back missing parameters ([78377b5](https://github.com/imagekit-developer/imagekit-ruby/commit/78377b55c03f7818a5f2ae57d19464dfae58763a))
* **api:** update webhook event names and remove DAM prefix ([c621b14](https://github.com/imagekit-developer/imagekit-ruby/commit/c621b14ca3a92b3428bd3a41156539aba3668097))


### Bug Fixes

* **api:** extract shared schemas to prevent Go webhook union breaking changes ([0325862](https://github.com/imagekit-developer/imagekit-ruby/commit/032586298410662b5f45b9b4189cc23ef74c1e40))
* **api:** fix references of schema ([3d07367](https://github.com/imagekit-developer/imagekit-ruby/commit/3d073676557eaac1a3ce9447866936e707f45566))
* **api:** rename DamFile events to File for consistency ([5998787](https://github.com/imagekit-developer/imagekit-ruby/commit/5998787a6607eb936b51b46b92e24679ac2dd321))
* **docs:** remove redundant information about versioning in README ([a546963](https://github.com/imagekit-developer/imagekit-ruby/commit/a546963ec88a011e18426a2a9ad46893e8e45eec))
* **docs:** remove redundant sub-item for webhook signature verification in README ([03f4b45](https://github.com/imagekit-developer/imagekit-ruby/commit/03f4b4580157f6c5a81905b549801e9abb2f3c2c))
* **docs:** remove unnecessary password parameter from example ([77c9134](https://github.com/imagekit-developer/imagekit-ruby/commit/77c9134775b106ac5107579f3059390870ced790))
* multipart encoding for file arrays ([5f02f3a](https://github.com/imagekit-developer/imagekit-ruby/commit/5f02f3a700d92bdcba063ce82d64c82fc70d37f8))
* **webhooks:** encode webhook key in Base64 before verification ([db0b711](https://github.com/imagekit-developer/imagekit-ruby/commit/db0b711f50b3e992f36dd3f30ef74dac502a44a2))


### Documentation

* add webhook verification section to README ([ceb1927](https://github.com/imagekit-developer/imagekit-ruby/commit/ceb1927213edf8467e8e584a4b43999f0cedcf20))


### Refactors

* AITags to singular AITag schema with array items pattern ([01a4f00](https://github.com/imagekit-developer/imagekit-ruby/commit/01a4f00f0ce0b7f308f8f84351327c2a25a77408))

## 4.3.0 (2026-04-06)

Full Changelog: [v4.2.0...v4.3.0](https://github.com/imagekit-developer/imagekit-ruby/compare/v4.2.0...v4.3.0)
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ GIT
PATH
remote: .
specs:
imagekitio (4.3.0)
imagekitio (4.4.0)
cgi
connection_pool
standardwebhooks
Expand Down
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ If you're using Ruby on Rails, the [ImageKit Rails gem](https://github.com/image
- [Helper Methods](#helper-methods)
- [Authentication parameters for client-side uploads](#authentication-parameters-for-client-side-uploads)
- [Responsive image attributes](#responsive-image-attributes)
- [Webhook verification](#webhook-verification)
- [Handling errors](#handling-errors)
- [Retries](#retries)
- [Timeouts](#timeouts)
Expand All @@ -45,7 +46,7 @@ To use this gem, install via Bundler by adding the following to your application
<!-- x-release-please-start-version -->

```ruby
gem "imagekitio", "~> 4.3.0"
gem "imagekitio", "~> 4.4.0"
```

<!-- x-release-please-end -->
Expand Down Expand Up @@ -525,6 +526,12 @@ attrs = image_kit.helper.get_responsive_image_attributes({
})
```

## Webhook verification

The ImageKit SDK provides utilities to verify webhook signatures for secure event handling. This ensures that webhook requests are actually coming from ImageKit and haven't been tampered with.

For detailed information about webhook setup, signature verification, and handling different webhook events, refer to the [ImageKit webhook documentation](https://imagekit.io/docs/webhooks#verify-webhook-signature).

### Handling errors

When the library is unable to connect to the API, or if the API returns a non-success status code (i.e., 4xx or 5xx response), a subclass of `Imagekitio::Errors::APIError` will be thrown:
Expand Down Expand Up @@ -731,7 +738,7 @@ image_kit.assets.list(

## Versioning

This package follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions. As the library is in initial development and has a major version of `0`, APIs may change at any time.
This package follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions.

This package considers improvements to the (non-runtime) `*.rbi` and `*.rbs` type definitions to be non-breaking changes.

Expand Down
12 changes: 11 additions & 1 deletion lib/imagekitio.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,11 @@
require_relative "imagekitio/client"
require_relative "imagekitio/models/accounts/origin_request"
require_relative "imagekitio/models/accounts/url_endpoint_request"
require_relative "imagekitio/models/base_webhook_event"
require_relative "imagekitio/models/update_file_request"
require_relative "imagekitio/models/file"
require_relative "imagekitio/models/src_options"
require_relative "imagekitio/models/base_overlay"
require_relative "imagekitio/models/base_webhook_event"
require_relative "imagekitio/models/accounts/origin_create_params"
require_relative "imagekitio/models/accounts/origin_delete_params"
require_relative "imagekitio/models/accounts/origin_get_params"
Expand All @@ -76,6 +76,7 @@
require_relative "imagekitio/models/accounts/url_endpoint_update_params"
require_relative "imagekitio/models/accounts/usage_get_params"
require_relative "imagekitio/models/accounts/usage_get_response"
require_relative "imagekitio/models/ai_tag"
require_relative "imagekitio/models/asset_list_params"
require_relative "imagekitio/models/asset_list_response"
require_relative "imagekitio/models/beta/v2/file_upload_params"
Expand All @@ -84,17 +85,21 @@
require_relative "imagekitio/models/cache/invalidation_create_response"
require_relative "imagekitio/models/cache/invalidation_get_params"
require_relative "imagekitio/models/cache/invalidation_get_response"
require_relative "imagekitio/models/custom_metadata"
require_relative "imagekitio/models/custom_metadata_field"
require_relative "imagekitio/models/custom_metadata_field_create_params"
require_relative "imagekitio/models/custom_metadata_field_delete_params"
require_relative "imagekitio/models/custom_metadata_field_delete_response"
require_relative "imagekitio/models/custom_metadata_field_list_params"
require_relative "imagekitio/models/custom_metadata_field_list_response"
require_relative "imagekitio/models/custom_metadata_field_update_params"
require_relative "imagekitio/models/embedded_metadata"
require_relative "imagekitio/models/extension_config"
require_relative "imagekitio/models/extensions"
require_relative "imagekitio/models/file_copy_params"
require_relative "imagekitio/models/file_copy_response"
require_relative "imagekitio/models/file_create_event"
require_relative "imagekitio/models/file_delete_event"
require_relative "imagekitio/models/file_delete_params"
require_relative "imagekitio/models/file_get_params"
require_relative "imagekitio/models/file_move_params"
Expand All @@ -117,10 +122,13 @@
require_relative "imagekitio/models/files/version_list_params"
require_relative "imagekitio/models/files/version_list_response"
require_relative "imagekitio/models/files/version_restore_params"
require_relative "imagekitio/models/file_update_event"
require_relative "imagekitio/models/file_update_params"
require_relative "imagekitio/models/file_update_response"
require_relative "imagekitio/models/file_upload_params"
require_relative "imagekitio/models/file_upload_response"
require_relative "imagekitio/models/file_version_create_event"
require_relative "imagekitio/models/file_version_delete_event"
require_relative "imagekitio/models/folder"
require_relative "imagekitio/models/folder_copy_params"
require_relative "imagekitio/models/folder_copy_response"
Expand Down Expand Up @@ -148,6 +156,7 @@
require_relative "imagekitio/models/saved_extension_list_params"
require_relative "imagekitio/models/saved_extension_list_response"
require_relative "imagekitio/models/saved_extension_update_params"
require_relative "imagekitio/models/selected_fields_schema"
require_relative "imagekitio/models/solid_color_overlay"
require_relative "imagekitio/models/solid_color_overlay_transformation"
require_relative "imagekitio/models/streaming_resolution"
Expand All @@ -163,6 +172,7 @@
require_relative "imagekitio/models/upload_post_transform_success_event"
require_relative "imagekitio/models/upload_pre_transform_error_event"
require_relative "imagekitio/models/upload_pre_transform_success_event"
require_relative "imagekitio/models/version_info"
require_relative "imagekitio/models/video_overlay"
require_relative "imagekitio/models/video_transformation_accepted_event"
require_relative "imagekitio/models/video_transformation_error_event"
Expand Down
10 changes: 5 additions & 5 deletions lib/imagekitio/internal/type/base_model.rb
Original file line number Diff line number Diff line change
Expand Up @@ -438,11 +438,11 @@ def deep_to_h = self.class.recursively_to_h(@data, convert: false)
# @return [Hash{Symbol=>Object}]
#
# @example
# # `base_overlay` is a `Imagekitio::BaseOverlay`
# base_overlay => {
# layer_mode: layer_mode,
# position: position,
# timing: timing
# # `ai_tag` is a `Imagekitio::AITag`
# ai_tag => {
# confidence: confidence,
# name: name,
# source: source
# }
def deconstruct_keys(keys)
(keys || self.class.known_fields.keys)
Expand Down
4 changes: 3 additions & 1 deletion lib/imagekitio/internal/util.rb
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,7 @@ def encode_query_params(query)
#
# @return [Array(String, Enumerable<String>)]
private def encode_multipart_streaming(body)
# rubocop:disable Style/CaseEquality
# RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length
boundary = SecureRandom.urlsafe_base64(46)

Expand All @@ -619,7 +620,7 @@ def encode_query_params(query)
in Hash
body.each do |key, val|
case val
in Array if val.all? { primitive?(_1) }
in Array if val.all? { primitive?(_1) || Imagekitio::Internal::Type::FileInput === _1 }
val.each do |v|
write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
end
Expand All @@ -635,6 +636,7 @@ def encode_query_params(query)

fused_io = fused_enum(strio) { closing.each(&:call) }
[boundary, fused_io]
# rubocop:enable Style/CaseEquality
end

# @api private
Expand Down
25 changes: 25 additions & 0 deletions lib/imagekitio/models.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ module Imagekitio

Accounts = Imagekitio::Models::Accounts

AITag = Imagekitio::Models::AITag

AssetListParams = Imagekitio::Models::AssetListParams

BaseOverlay = Imagekitio::Models::BaseOverlay
Expand All @@ -51,6 +53,9 @@ module Imagekitio

Cache = Imagekitio::Models::Cache

# @type [Imagekitio::Internal::Type::Converter]
CustomMetadata = Imagekitio::Models::CustomMetadata

CustomMetadataField = Imagekitio::Models::CustomMetadataField

CustomMetadataFieldCreateParams = Imagekitio::Models::CustomMetadataFieldCreateParams
Expand All @@ -61,6 +66,9 @@ module Imagekitio

CustomMetadataFieldUpdateParams = Imagekitio::Models::CustomMetadataFieldUpdateParams

# @type [Imagekitio::Internal::Type::Converter]
EmbeddedMetadata = Imagekitio::Models::EmbeddedMetadata

ExtensionConfig = Imagekitio::Models::ExtensionConfig

ExtensionItem = Imagekitio::Models::ExtensionItem
Expand All @@ -72,6 +80,10 @@ module Imagekitio

FileCopyParams = Imagekitio::Models::FileCopyParams

FileCreateEvent = Imagekitio::Models::FileCreateEvent

FileDeleteEvent = Imagekitio::Models::FileDeleteEvent

FileDeleteParams = Imagekitio::Models::FileDeleteParams

FileGetParams = Imagekitio::Models::FileGetParams
Expand All @@ -82,10 +94,16 @@ module Imagekitio

Files = Imagekitio::Models::Files

FileUpdateEvent = Imagekitio::Models::FileUpdateEvent

FileUpdateParams = Imagekitio::Models::FileUpdateParams

FileUploadParams = Imagekitio::Models::FileUploadParams

FileVersionCreateEvent = Imagekitio::Models::FileVersionCreateEvent

FileVersionDeleteEvent = Imagekitio::Models::FileVersionDeleteEvent

Folder = Imagekitio::Models::Folder

FolderCopyParams = Imagekitio::Models::FolderCopyParams
Expand Down Expand Up @@ -126,6 +144,11 @@ module Imagekitio

SavedExtensionUpdateParams = Imagekitio::Models::SavedExtensionUpdateParams

# @type [Imagekitio::Internal::Type::Converter]
SelectedFieldsSchema = Imagekitio::Models::SelectedFieldsSchema

SelectedFieldsSchemaItem = Imagekitio::Models::SelectedFieldsSchemaItem

SolidColorOverlay = Imagekitio::Models::SolidColorOverlay

SolidColorOverlayTransformation = Imagekitio::Models::SolidColorOverlayTransformation
Expand Down Expand Up @@ -160,6 +183,8 @@ module Imagekitio

UploadPreTransformSuccessEvent = Imagekitio::Models::UploadPreTransformSuccessEvent

VersionInfo = Imagekitio::Models::VersionInfo

VideoOverlay = Imagekitio::Models::VideoOverlay

VideoTransformationAcceptedEvent = Imagekitio::Models::VideoTransformationAcceptedEvent
Expand Down
39 changes: 39 additions & 0 deletions lib/imagekitio/models/ai_tag.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# frozen_string_literal: true

module Imagekitio
module Models
class AITag < Imagekitio::Internal::Type::BaseModel
# @!attribute confidence
# Confidence score of the tag.
#
# @return [Float, nil]
optional :confidence, Float

# @!attribute name
# Name of the tag.
#
# @return [String, nil]
optional :name, String

# @!attribute source
# Source of the tag. Possible values are `google-auto-tagging` and
# `aws-auto-tagging`.
#
# @return [String, nil]
optional :source, String

# @!method initialize(confidence: nil, name: nil, source: nil)
# Some parameter documentations has been truncated, see
# {Imagekitio::Models::AITag} for more details.
#
# AI-generated tag associated with an image. These tags can be added using the
# `google-auto-tagging` or `aws-auto-tagging` extensions.
#
# @param confidence [Float] Confidence score of the tag.
#
# @param name [String] Name of the tag.
#
# @param source [String] Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-taggi
end
end
end
Loading
Loading