diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 1f73031b..ff1c7af5 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "3.2.0"
+ ".": "3.3.0"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6dd6f7c1..96892df7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
# Changelog
+## [3.3.0](https://github.com/imagekit-developer/imagekit-java/compare/v3.2.0...v3.3.0) (2026-06-18)
+
+
+### Features
+
+* **origins:** add useIAMRole for IAM role authentication ([621b8b9](https://github.com/imagekit-developer/imagekit-java/commit/621b8b9c981f03458c836ba5fc167cd77d70b008))
+
+
+### Documentation
+
+* update default value in description for intensity in colorize transformation ([b7bae14](https://github.com/imagekit-developer/imagekit-java/commit/b7bae14adf3219aac909605d951a37e991d0ff8d))
+
## [3.2.0](https://github.com/imagekit-developer/imagekit-java/compare/v3.1.2...v3.2.0) (2026-06-03)
diff --git a/README.md b/README.md
index 977f147f..d1e382a7 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,8 @@
-[](https://central.sonatype.com/artifact/io.imagekit/image-kit-java/3.2.0)
-[](https://javadoc.io/doc/io.imagekit/image-kit-java/3.1.1)
+[](https://central.sonatype.com/artifact/io.imagekit/image-kit-java/3.3.0)
+[](https://javadoc.io/doc/io.imagekit/image-kit-java/3.1.1)
@@ -11,7 +11,7 @@ The ImageKit Java SDK is a comprehensive library designed to simplify the integr
-The REST API documentation can be found on [imagekit.io](https://imagekit.io/docs/api-reference). Javadocs are available on [javadoc.io](https://javadoc.io/doc/io.imagekit/image-kit-java/3.2.0).
+The REST API documentation can be found on [imagekit.io](https://imagekit.io/docs/api-reference). Javadocs are available on [javadoc.io](https://javadoc.io/doc/io.imagekit/image-kit-java/3.3.0).
@@ -46,7 +46,7 @@ The REST API documentation can be found on [imagekit.io](https://imagekit.io/doc
### Gradle
```kotlin
-implementation("io.imagekit:image-kit-java:3.2.0")
+implementation("io.imagekit:image-kit-java:3.3.0")
```
### Maven
@@ -55,7 +55,7 @@ implementation("io.imagekit:image-kit-java:3.2.0")
io.imagekit
image-kit-java
- 3.2.0
+ 3.3.0
```
diff --git a/build.gradle.kts b/build.gradle.kts
index f949c9ff..1b6c0c52 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -8,7 +8,7 @@ repositories {
allprojects {
group = "io.imagekit"
- version = "3.2.0" // x-release-please-version
+ version = "3.3.0" // x-release-please-version
}
subprojects {
diff --git a/image-kit-java-core/src/main/kotlin/io/imagekit/models/Transformation.kt b/image-kit-java-core/src/main/kotlin/io/imagekit/models/Transformation.kt
index 5232c39e..37f81007 100644
--- a/image-kit-java-core/src/main/kotlin/io/imagekit/models/Transformation.kt
+++ b/image-kit-java-core/src/main/kotlin/io/imagekit/models/Transformation.kt
@@ -405,7 +405,7 @@ private constructor(
/**
* Applies a color tint to the image. Accepts color and intensity as optional parameters.
* - `co-color` - Color to apply (e.g., `red`, `blue`, `FF0022`). Default is gray color.
- * - `in-intensity` - Intensity of the color (0-100). Default is 35. See
+ * - `in-intensity` - Intensity of the color (0-100). Default is 100. See
* [Colorize](https://imagekit.io/docs/effects-and-enhancements#colorize---e-colorize).
*
* @throws ImageKitInvalidDataException if the JSON field has an unexpected type (e.g. if the
@@ -1651,7 +1651,7 @@ private constructor(
/**
* Applies a color tint to the image. Accepts color and intensity as optional parameters.
* - `co-color` - Color to apply (e.g., `red`, `blue`, `FF0022`). Default is gray color.
- * - `in-intensity` - Intensity of the color (0-100). Default is 35. See
+ * - `in-intensity` - Intensity of the color (0-100). Default is 100. See
* [Colorize](https://imagekit.io/docs/effects-and-enhancements#colorize---e-colorize).
*/
fun colorize(colorize: String) = colorize(JsonField.of(colorize))
diff --git a/image-kit-java-core/src/main/kotlin/io/imagekit/models/accounts/origins/OriginRequest.kt b/image-kit-java-core/src/main/kotlin/io/imagekit/models/accounts/origins/OriginRequest.kt
index a5ea2714..6e5d05d1 100644
--- a/image-kit-java-core/src/main/kotlin/io/imagekit/models/accounts/origins/OriginRequest.kt
+++ b/image-kit-java-core/src/main/kotlin/io/imagekit/models/accounts/origins/OriginRequest.kt
@@ -411,6 +411,7 @@ private constructor(
private val baseUrlForCanonicalHeader: JsonField,
private val includeCanonicalHeader: JsonField,
private val prefix: JsonField,
+ private val useIamRole: JsonField,
private val additionalProperties: MutableMap,
) {
@@ -432,6 +433,9 @@ private constructor(
@ExcludeMissing
includeCanonicalHeader: JsonField = JsonMissing.of(),
@JsonProperty("prefix") @ExcludeMissing prefix: JsonField = JsonMissing.of(),
+ @JsonProperty("useIAMRole")
+ @ExcludeMissing
+ useIamRole: JsonField = JsonMissing.of(),
) : this(
accessKey,
bucket,
@@ -441,11 +445,12 @@ private constructor(
baseUrlForCanonicalHeader,
includeCanonicalHeader,
prefix,
+ useIamRole,
mutableMapOf(),
)
/**
- * Access key for the bucket.
+ * Access key for the bucket. When `useIAMRole` is `true`, send an empty string.
*
* @throws ImageKitInvalidDataException if the JSON field has an unexpected type or is
* unexpectedly missing or null (e.g. if the server responded with an unexpected value).
@@ -469,7 +474,7 @@ private constructor(
fun name(): String = name.getRequired("name")
/**
- * Secret key for the bucket.
+ * Secret key for the bucket. When `useIAMRole` is `true`, send an empty string.
*
* @throws ImageKitInvalidDataException if the JSON field has an unexpected type or is
* unexpectedly missing or null (e.g. if the server responded with an unexpected value).
@@ -513,6 +518,15 @@ private constructor(
*/
fun prefix(): Optional = prefix.getOptional("prefix")
+ /**
+ * Use IAM role for authentication instead of access/secret keys. When set to `true`, send
+ * an empty string for both `accessKey` and `secretKey`.
+ *
+ * @throws ImageKitInvalidDataException if the JSON field has an unexpected type (e.g. if
+ * the server responded with an unexpected value).
+ */
+ fun useIamRole(): Optional = useIamRole.getOptional("useIAMRole")
+
/**
* Returns the raw JSON value of [accessKey].
*
@@ -568,6 +582,15 @@ private constructor(
*/
@JsonProperty("prefix") @ExcludeMissing fun _prefix(): JsonField = prefix
+ /**
+ * Returns the raw JSON value of [useIamRole].
+ *
+ * Unlike [useIamRole], this method doesn't throw if the JSON field has an unexpected type.
+ */
+ @JsonProperty("useIAMRole")
+ @ExcludeMissing
+ fun _useIamRole(): JsonField = useIamRole
+
@JsonAnySetter
private fun putAdditionalProperty(key: String, value: JsonValue) {
additionalProperties.put(key, value)
@@ -607,6 +630,7 @@ private constructor(
private var baseUrlForCanonicalHeader: JsonField = JsonMissing.of()
private var includeCanonicalHeader: JsonField = JsonMissing.of()
private var prefix: JsonField = JsonMissing.of()
+ private var useIamRole: JsonField = JsonMissing.of()
private var additionalProperties: MutableMap = mutableMapOf()
@JvmSynthetic
@@ -619,10 +643,11 @@ private constructor(
baseUrlForCanonicalHeader = s3.baseUrlForCanonicalHeader
includeCanonicalHeader = s3.includeCanonicalHeader
prefix = s3.prefix
+ useIamRole = s3.useIamRole
additionalProperties = s3.additionalProperties.toMutableMap()
}
- /** Access key for the bucket. */
+ /** Access key for the bucket. When `useIAMRole` is `true`, send an empty string. */
fun accessKey(accessKey: String) = accessKey(JsonField.of(accessKey))
/**
@@ -658,7 +683,7 @@ private constructor(
*/
fun name(name: JsonField) = apply { this.name = name }
- /** Secret key for the bucket. */
+ /** Secret key for the bucket. When `useIAMRole` is `true`, send an empty string. */
fun secretKey(secretKey: String) = secretKey(JsonField.of(secretKey))
/**
@@ -726,6 +751,21 @@ private constructor(
*/
fun prefix(prefix: JsonField) = apply { this.prefix = prefix }
+ /**
+ * Use IAM role for authentication instead of access/secret keys. When set to `true`,
+ * send an empty string for both `accessKey` and `secretKey`.
+ */
+ fun useIamRole(useIamRole: Boolean) = useIamRole(JsonField.of(useIamRole))
+
+ /**
+ * Sets [Builder.useIamRole] to an arbitrary JSON value.
+ *
+ * You should usually call [Builder.useIamRole] with a well-typed [Boolean] value
+ * instead. This method is primarily for setting the field to an undocumented or not yet
+ * supported value.
+ */
+ fun useIamRole(useIamRole: JsonField) = apply { this.useIamRole = useIamRole }
+
fun additionalProperties(additionalProperties: Map) = apply {
this.additionalProperties.clear()
putAllAdditionalProperties(additionalProperties)
@@ -770,6 +810,7 @@ private constructor(
baseUrlForCanonicalHeader,
includeCanonicalHeader,
prefix,
+ useIamRole,
additionalProperties.toMutableMap(),
)
}
@@ -802,6 +843,7 @@ private constructor(
baseUrlForCanonicalHeader()
includeCanonicalHeader()
prefix()
+ useIamRole()
validated = true
}
@@ -828,7 +870,8 @@ private constructor(
type.let { if (it == JsonValue.from("S3")) 1 else 0 } +
(if (baseUrlForCanonicalHeader.asKnown().isPresent) 1 else 0) +
(if (includeCanonicalHeader.asKnown().isPresent) 1 else 0) +
- (if (prefix.asKnown().isPresent) 1 else 0)
+ (if (prefix.asKnown().isPresent) 1 else 0) +
+ (if (useIamRole.asKnown().isPresent) 1 else 0)
override fun equals(other: Any?): Boolean {
if (this === other) {
@@ -844,6 +887,7 @@ private constructor(
baseUrlForCanonicalHeader == other.baseUrlForCanonicalHeader &&
includeCanonicalHeader == other.includeCanonicalHeader &&
prefix == other.prefix &&
+ useIamRole == other.useIamRole &&
additionalProperties == other.additionalProperties
}
@@ -857,6 +901,7 @@ private constructor(
baseUrlForCanonicalHeader,
includeCanonicalHeader,
prefix,
+ useIamRole,
additionalProperties,
)
}
@@ -864,7 +909,7 @@ private constructor(
override fun hashCode(): Int = hashCode
override fun toString() =
- "S3{accessKey=$accessKey, bucket=$bucket, name=$name, secretKey=$secretKey, type=$type, baseUrlForCanonicalHeader=$baseUrlForCanonicalHeader, includeCanonicalHeader=$includeCanonicalHeader, prefix=$prefix, additionalProperties=$additionalProperties}"
+ "S3{accessKey=$accessKey, bucket=$bucket, name=$name, secretKey=$secretKey, type=$type, baseUrlForCanonicalHeader=$baseUrlForCanonicalHeader, includeCanonicalHeader=$includeCanonicalHeader, prefix=$prefix, useIamRole=$useIamRole, additionalProperties=$additionalProperties}"
}
class S3Compatible
@@ -1431,6 +1476,7 @@ private constructor(
private val baseUrlForCanonicalHeader: JsonField,
private val includeCanonicalHeader: JsonField,
private val prefix: JsonField,
+ private val useIamRole: JsonField,
private val additionalProperties: MutableMap,
) {
@@ -1452,6 +1498,9 @@ private constructor(
@ExcludeMissing
includeCanonicalHeader: JsonField = JsonMissing.of(),
@JsonProperty("prefix") @ExcludeMissing prefix: JsonField = JsonMissing.of(),
+ @JsonProperty("useIAMRole")
+ @ExcludeMissing
+ useIamRole: JsonField = JsonMissing.of(),
) : this(
accessKey,
bucket,
@@ -1461,11 +1510,12 @@ private constructor(
baseUrlForCanonicalHeader,
includeCanonicalHeader,
prefix,
+ useIamRole,
mutableMapOf(),
)
/**
- * Access key for the bucket.
+ * Access key for the bucket. When `useIAMRole` is `true`, send an empty string.
*
* @throws ImageKitInvalidDataException if the JSON field has an unexpected type or is
* unexpectedly missing or null (e.g. if the server responded with an unexpected value).
@@ -1489,7 +1539,7 @@ private constructor(
fun name(): String = name.getRequired("name")
/**
- * Secret key for the bucket.
+ * Secret key for the bucket. When `useIAMRole` is `true`, send an empty string.
*
* @throws ImageKitInvalidDataException if the JSON field has an unexpected type or is
* unexpectedly missing or null (e.g. if the server responded with an unexpected value).
@@ -1533,6 +1583,15 @@ private constructor(
*/
fun prefix(): Optional = prefix.getOptional("prefix")
+ /**
+ * Use IAM role for authentication instead of access/secret keys. When set to `true`, send
+ * an empty string for both `accessKey` and `secretKey`.
+ *
+ * @throws ImageKitInvalidDataException if the JSON field has an unexpected type (e.g. if
+ * the server responded with an unexpected value).
+ */
+ fun useIamRole(): Optional = useIamRole.getOptional("useIAMRole")
+
/**
* Returns the raw JSON value of [accessKey].
*
@@ -1588,6 +1647,15 @@ private constructor(
*/
@JsonProperty("prefix") @ExcludeMissing fun _prefix(): JsonField = prefix
+ /**
+ * Returns the raw JSON value of [useIamRole].
+ *
+ * Unlike [useIamRole], this method doesn't throw if the JSON field has an unexpected type.
+ */
+ @JsonProperty("useIAMRole")
+ @ExcludeMissing
+ fun _useIamRole(): JsonField = useIamRole
+
@JsonAnySetter
private fun putAdditionalProperty(key: String, value: JsonValue) {
additionalProperties.put(key, value)
@@ -1627,6 +1695,7 @@ private constructor(
private var baseUrlForCanonicalHeader: JsonField = JsonMissing.of()
private var includeCanonicalHeader: JsonField = JsonMissing.of()
private var prefix: JsonField = JsonMissing.of()
+ private var useIamRole: JsonField = JsonMissing.of()
private var additionalProperties: MutableMap = mutableMapOf()
@JvmSynthetic
@@ -1639,10 +1708,11 @@ private constructor(
baseUrlForCanonicalHeader = cloudinaryBackup.baseUrlForCanonicalHeader
includeCanonicalHeader = cloudinaryBackup.includeCanonicalHeader
prefix = cloudinaryBackup.prefix
+ useIamRole = cloudinaryBackup.useIamRole
additionalProperties = cloudinaryBackup.additionalProperties.toMutableMap()
}
- /** Access key for the bucket. */
+ /** Access key for the bucket. When `useIAMRole` is `true`, send an empty string. */
fun accessKey(accessKey: String) = accessKey(JsonField.of(accessKey))
/**
@@ -1678,7 +1748,7 @@ private constructor(
*/
fun name(name: JsonField) = apply { this.name = name }
- /** Secret key for the bucket. */
+ /** Secret key for the bucket. When `useIAMRole` is `true`, send an empty string. */
fun secretKey(secretKey: String) = secretKey(JsonField.of(secretKey))
/**
@@ -1746,6 +1816,21 @@ private constructor(
*/
fun prefix(prefix: JsonField) = apply { this.prefix = prefix }
+ /**
+ * Use IAM role for authentication instead of access/secret keys. When set to `true`,
+ * send an empty string for both `accessKey` and `secretKey`.
+ */
+ fun useIamRole(useIamRole: Boolean) = useIamRole(JsonField.of(useIamRole))
+
+ /**
+ * Sets [Builder.useIamRole] to an arbitrary JSON value.
+ *
+ * You should usually call [Builder.useIamRole] with a well-typed [Boolean] value
+ * instead. This method is primarily for setting the field to an undocumented or not yet
+ * supported value.
+ */
+ fun useIamRole(useIamRole: JsonField) = apply { this.useIamRole = useIamRole }
+
fun additionalProperties(additionalProperties: Map) = apply {
this.additionalProperties.clear()
putAllAdditionalProperties(additionalProperties)
@@ -1790,6 +1875,7 @@ private constructor(
baseUrlForCanonicalHeader,
includeCanonicalHeader,
prefix,
+ useIamRole,
additionalProperties.toMutableMap(),
)
}
@@ -1822,6 +1908,7 @@ private constructor(
baseUrlForCanonicalHeader()
includeCanonicalHeader()
prefix()
+ useIamRole()
validated = true
}
@@ -1848,7 +1935,8 @@ private constructor(
type.let { if (it == JsonValue.from("CLOUDINARY_BACKUP")) 1 else 0 } +
(if (baseUrlForCanonicalHeader.asKnown().isPresent) 1 else 0) +
(if (includeCanonicalHeader.asKnown().isPresent) 1 else 0) +
- (if (prefix.asKnown().isPresent) 1 else 0)
+ (if (prefix.asKnown().isPresent) 1 else 0) +
+ (if (useIamRole.asKnown().isPresent) 1 else 0)
override fun equals(other: Any?): Boolean {
if (this === other) {
@@ -1864,6 +1952,7 @@ private constructor(
baseUrlForCanonicalHeader == other.baseUrlForCanonicalHeader &&
includeCanonicalHeader == other.includeCanonicalHeader &&
prefix == other.prefix &&
+ useIamRole == other.useIamRole &&
additionalProperties == other.additionalProperties
}
@@ -1877,6 +1966,7 @@ private constructor(
baseUrlForCanonicalHeader,
includeCanonicalHeader,
prefix,
+ useIamRole,
additionalProperties,
)
}
@@ -1884,7 +1974,7 @@ private constructor(
override fun hashCode(): Int = hashCode
override fun toString() =
- "CloudinaryBackup{accessKey=$accessKey, bucket=$bucket, name=$name, secretKey=$secretKey, type=$type, baseUrlForCanonicalHeader=$baseUrlForCanonicalHeader, includeCanonicalHeader=$includeCanonicalHeader, prefix=$prefix, additionalProperties=$additionalProperties}"
+ "CloudinaryBackup{accessKey=$accessKey, bucket=$bucket, name=$name, secretKey=$secretKey, type=$type, baseUrlForCanonicalHeader=$baseUrlForCanonicalHeader, includeCanonicalHeader=$includeCanonicalHeader, prefix=$prefix, useIamRole=$useIamRole, additionalProperties=$additionalProperties}"
}
class WebFolder
diff --git a/image-kit-java-core/src/main/kotlin/io/imagekit/models/accounts/origins/OriginResponse.kt b/image-kit-java-core/src/main/kotlin/io/imagekit/models/accounts/origins/OriginResponse.kt
index f6968751..078490bd 100644
--- a/image-kit-java-core/src/main/kotlin/io/imagekit/models/accounts/origins/OriginResponse.kt
+++ b/image-kit-java-core/src/main/kotlin/io/imagekit/models/accounts/origins/OriginResponse.kt
@@ -411,6 +411,7 @@ private constructor(
private val prefix: JsonField,
private val type: JsonValue,
private val baseUrlForCanonicalHeader: JsonField,
+ private val useIamRole: JsonField,
private val additionalProperties: MutableMap,
) {
@@ -427,6 +428,9 @@ private constructor(
@JsonProperty("baseUrlForCanonicalHeader")
@ExcludeMissing
baseUrlForCanonicalHeader: JsonField = JsonMissing.of(),
+ @JsonProperty("useIAMRole")
+ @ExcludeMissing
+ useIamRole: JsonField = JsonMissing.of(),
) : this(
id,
bucket,
@@ -435,6 +439,7 @@ private constructor(
prefix,
type,
baseUrlForCanonicalHeader,
+ useIamRole,
mutableMapOf(),
)
@@ -500,6 +505,14 @@ private constructor(
fun baseUrlForCanonicalHeader(): Optional =
baseUrlForCanonicalHeader.getOptional("baseUrlForCanonicalHeader")
+ /**
+ * Whether the origin authenticates using an IAM role instead of access/secret keys.
+ *
+ * @throws ImageKitInvalidDataException if the JSON field has an unexpected type (e.g. if
+ * the server responded with an unexpected value).
+ */
+ fun useIamRole(): Optional = useIamRole.getOptional("useIAMRole")
+
/**
* Returns the raw JSON value of [id].
*
@@ -548,6 +561,15 @@ private constructor(
@ExcludeMissing
fun _baseUrlForCanonicalHeader(): JsonField = baseUrlForCanonicalHeader
+ /**
+ * Returns the raw JSON value of [useIamRole].
+ *
+ * Unlike [useIamRole], this method doesn't throw if the JSON field has an unexpected type.
+ */
+ @JsonProperty("useIAMRole")
+ @ExcludeMissing
+ fun _useIamRole(): JsonField = useIamRole
+
@JsonAnySetter
private fun putAdditionalProperty(key: String, value: JsonValue) {
additionalProperties.put(key, value)
@@ -587,6 +609,7 @@ private constructor(
private var prefix: JsonField? = null
private var type: JsonValue = JsonValue.from("S3")
private var baseUrlForCanonicalHeader: JsonField = JsonMissing.of()
+ private var useIamRole: JsonField = JsonMissing.of()
private var additionalProperties: MutableMap = mutableMapOf()
@JvmSynthetic
@@ -598,6 +621,7 @@ private constructor(
prefix = s3.prefix
type = s3.type
baseUrlForCanonicalHeader = s3.baseUrlForCanonicalHeader
+ useIamRole = s3.useIamRole
additionalProperties = s3.additionalProperties.toMutableMap()
}
@@ -696,6 +720,18 @@ private constructor(
this.baseUrlForCanonicalHeader = baseUrlForCanonicalHeader
}
+ /** Whether the origin authenticates using an IAM role instead of access/secret keys. */
+ fun useIamRole(useIamRole: Boolean) = useIamRole(JsonField.of(useIamRole))
+
+ /**
+ * Sets [Builder.useIamRole] to an arbitrary JSON value.
+ *
+ * You should usually call [Builder.useIamRole] with a well-typed [Boolean] value
+ * instead. This method is primarily for setting the field to an undocumented or not yet
+ * supported value.
+ */
+ fun useIamRole(useIamRole: JsonField) = apply { this.useIamRole = useIamRole }
+
fun additionalProperties(additionalProperties: Map) = apply {
this.additionalProperties.clear()
putAllAdditionalProperties(additionalProperties)
@@ -740,6 +776,7 @@ private constructor(
checkRequired("prefix", prefix),
type,
baseUrlForCanonicalHeader,
+ useIamRole,
additionalProperties.toMutableMap(),
)
}
@@ -771,6 +808,7 @@ private constructor(
}
}
baseUrlForCanonicalHeader()
+ useIamRole()
validated = true
}
@@ -796,7 +834,8 @@ private constructor(
(if (name.asKnown().isPresent) 1 else 0) +
(if (prefix.asKnown().isPresent) 1 else 0) +
type.let { if (it == JsonValue.from("S3")) 1 else 0 } +
- (if (baseUrlForCanonicalHeader.asKnown().isPresent) 1 else 0)
+ (if (baseUrlForCanonicalHeader.asKnown().isPresent) 1 else 0) +
+ (if (useIamRole.asKnown().isPresent) 1 else 0)
override fun equals(other: Any?): Boolean {
if (this === other) {
@@ -811,6 +850,7 @@ private constructor(
prefix == other.prefix &&
type == other.type &&
baseUrlForCanonicalHeader == other.baseUrlForCanonicalHeader &&
+ useIamRole == other.useIamRole &&
additionalProperties == other.additionalProperties
}
@@ -823,6 +863,7 @@ private constructor(
prefix,
type,
baseUrlForCanonicalHeader,
+ useIamRole,
additionalProperties,
)
}
@@ -830,7 +871,7 @@ private constructor(
override fun hashCode(): Int = hashCode
override fun toString() =
- "S3{id=$id, bucket=$bucket, includeCanonicalHeader=$includeCanonicalHeader, name=$name, prefix=$prefix, type=$type, baseUrlForCanonicalHeader=$baseUrlForCanonicalHeader, additionalProperties=$additionalProperties}"
+ "S3{id=$id, bucket=$bucket, includeCanonicalHeader=$includeCanonicalHeader, name=$name, prefix=$prefix, type=$type, baseUrlForCanonicalHeader=$baseUrlForCanonicalHeader, useIamRole=$useIamRole, additionalProperties=$additionalProperties}"
}
class S3Compatible
@@ -1363,6 +1404,7 @@ private constructor(
private val prefix: JsonField,
private val type: JsonValue,
private val baseUrlForCanonicalHeader: JsonField,
+ private val useIamRole: JsonField,
private val additionalProperties: MutableMap,
) {
@@ -1379,6 +1421,9 @@ private constructor(
@JsonProperty("baseUrlForCanonicalHeader")
@ExcludeMissing
baseUrlForCanonicalHeader: JsonField = JsonMissing.of(),
+ @JsonProperty("useIAMRole")
+ @ExcludeMissing
+ useIamRole: JsonField = JsonMissing.of(),
) : this(
id,
bucket,
@@ -1387,6 +1432,7 @@ private constructor(
prefix,
type,
baseUrlForCanonicalHeader,
+ useIamRole,
mutableMapOf(),
)
@@ -1452,6 +1498,14 @@ private constructor(
fun baseUrlForCanonicalHeader(): Optional =
baseUrlForCanonicalHeader.getOptional("baseUrlForCanonicalHeader")
+ /**
+ * Whether the origin authenticates using an IAM role instead of access/secret keys.
+ *
+ * @throws ImageKitInvalidDataException if the JSON field has an unexpected type (e.g. if
+ * the server responded with an unexpected value).
+ */
+ fun useIamRole(): Optional = useIamRole.getOptional("useIAMRole")
+
/**
* Returns the raw JSON value of [id].
*
@@ -1500,6 +1554,15 @@ private constructor(
@ExcludeMissing
fun _baseUrlForCanonicalHeader(): JsonField = baseUrlForCanonicalHeader
+ /**
+ * Returns the raw JSON value of [useIamRole].
+ *
+ * Unlike [useIamRole], this method doesn't throw if the JSON field has an unexpected type.
+ */
+ @JsonProperty("useIAMRole")
+ @ExcludeMissing
+ fun _useIamRole(): JsonField = useIamRole
+
@JsonAnySetter
private fun putAdditionalProperty(key: String, value: JsonValue) {
additionalProperties.put(key, value)
@@ -1539,6 +1602,7 @@ private constructor(
private var prefix: JsonField? = null
private var type: JsonValue = JsonValue.from("CLOUDINARY_BACKUP")
private var baseUrlForCanonicalHeader: JsonField = JsonMissing.of()
+ private var useIamRole: JsonField = JsonMissing.of()
private var additionalProperties: MutableMap = mutableMapOf()
@JvmSynthetic
@@ -1550,6 +1614,7 @@ private constructor(
prefix = cloudinaryBackup.prefix
type = cloudinaryBackup.type
baseUrlForCanonicalHeader = cloudinaryBackup.baseUrlForCanonicalHeader
+ useIamRole = cloudinaryBackup.useIamRole
additionalProperties = cloudinaryBackup.additionalProperties.toMutableMap()
}
@@ -1648,6 +1713,18 @@ private constructor(
this.baseUrlForCanonicalHeader = baseUrlForCanonicalHeader
}
+ /** Whether the origin authenticates using an IAM role instead of access/secret keys. */
+ fun useIamRole(useIamRole: Boolean) = useIamRole(JsonField.of(useIamRole))
+
+ /**
+ * Sets [Builder.useIamRole] to an arbitrary JSON value.
+ *
+ * You should usually call [Builder.useIamRole] with a well-typed [Boolean] value
+ * instead. This method is primarily for setting the field to an undocumented or not yet
+ * supported value.
+ */
+ fun useIamRole(useIamRole: JsonField) = apply { this.useIamRole = useIamRole }
+
fun additionalProperties(additionalProperties: Map) = apply {
this.additionalProperties.clear()
putAllAdditionalProperties(additionalProperties)
@@ -1692,6 +1769,7 @@ private constructor(
checkRequired("prefix", prefix),
type,
baseUrlForCanonicalHeader,
+ useIamRole,
additionalProperties.toMutableMap(),
)
}
@@ -1723,6 +1801,7 @@ private constructor(
}
}
baseUrlForCanonicalHeader()
+ useIamRole()
validated = true
}
@@ -1748,7 +1827,8 @@ private constructor(
(if (name.asKnown().isPresent) 1 else 0) +
(if (prefix.asKnown().isPresent) 1 else 0) +
type.let { if (it == JsonValue.from("CLOUDINARY_BACKUP")) 1 else 0 } +
- (if (baseUrlForCanonicalHeader.asKnown().isPresent) 1 else 0)
+ (if (baseUrlForCanonicalHeader.asKnown().isPresent) 1 else 0) +
+ (if (useIamRole.asKnown().isPresent) 1 else 0)
override fun equals(other: Any?): Boolean {
if (this === other) {
@@ -1763,6 +1843,7 @@ private constructor(
prefix == other.prefix &&
type == other.type &&
baseUrlForCanonicalHeader == other.baseUrlForCanonicalHeader &&
+ useIamRole == other.useIamRole &&
additionalProperties == other.additionalProperties
}
@@ -1775,6 +1856,7 @@ private constructor(
prefix,
type,
baseUrlForCanonicalHeader,
+ useIamRole,
additionalProperties,
)
}
@@ -1782,7 +1864,7 @@ private constructor(
override fun hashCode(): Int = hashCode
override fun toString() =
- "CloudinaryBackup{id=$id, bucket=$bucket, includeCanonicalHeader=$includeCanonicalHeader, name=$name, prefix=$prefix, type=$type, baseUrlForCanonicalHeader=$baseUrlForCanonicalHeader, additionalProperties=$additionalProperties}"
+ "CloudinaryBackup{id=$id, bucket=$bucket, includeCanonicalHeader=$includeCanonicalHeader, name=$name, prefix=$prefix, type=$type, baseUrlForCanonicalHeader=$baseUrlForCanonicalHeader, useIamRole=$useIamRole, additionalProperties=$additionalProperties}"
}
class WebFolder
diff --git a/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginCreateParamsTest.kt b/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginCreateParamsTest.kt
index b5c83a1c..44dd2ed1 100644
--- a/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginCreateParamsTest.kt
+++ b/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginCreateParamsTest.kt
@@ -19,6 +19,7 @@ internal class OriginCreateParamsTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("images")
+ .useIamRole(true)
.build()
)
.build()
@@ -37,6 +38,7 @@ internal class OriginCreateParamsTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("images")
+ .useIamRole(true)
.build()
)
.build()
@@ -54,6 +56,7 @@ internal class OriginCreateParamsTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("images")
+ .useIamRole(true)
.build()
)
)
diff --git a/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginRequestTest.kt b/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginRequestTest.kt
index f0ca88a8..d18a1d83 100644
--- a/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginRequestTest.kt
+++ b/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginRequestTest.kt
@@ -25,6 +25,7 @@ internal class OriginRequestTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("raw-assets")
+ .useIamRole(true)
.build()
val originRequest = OriginRequest.ofS3(s3)
@@ -52,6 +53,7 @@ internal class OriginRequestTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("raw-assets")
+ .useIamRole(true)
.build()
)
@@ -129,6 +131,7 @@ internal class OriginRequestTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("raw-assets")
+ .useIamRole(true)
.build()
val originRequest = OriginRequest.ofCloudinaryBackup(cloudinaryBackup)
@@ -156,6 +159,7 @@ internal class OriginRequestTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("raw-assets")
+ .useIamRole(true)
.build()
)
diff --git a/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginResponseTest.kt b/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginResponseTest.kt
index 0147ac7e..04f6efb4 100644
--- a/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginResponseTest.kt
+++ b/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginResponseTest.kt
@@ -24,6 +24,7 @@ internal class OriginResponseTest {
.name("US S3 Storage")
.prefix("raw-assets")
.baseUrlForCanonicalHeader("https://cdn.example.com")
+ .useIamRole(true)
.build()
val originResponse = OriginResponse.ofS3(s3)
@@ -50,6 +51,7 @@ internal class OriginResponseTest {
.name("US S3 Storage")
.prefix("raw-assets")
.baseUrlForCanonicalHeader("https://cdn.example.com")
+ .useIamRole(true)
.build()
)
@@ -124,6 +126,7 @@ internal class OriginResponseTest {
.name("US S3 Storage")
.prefix("raw-assets")
.baseUrlForCanonicalHeader("https://cdn.example.com")
+ .useIamRole(true)
.build()
val originResponse = OriginResponse.ofCloudinaryBackup(cloudinaryBackup)
@@ -150,6 +153,7 @@ internal class OriginResponseTest {
.name("US S3 Storage")
.prefix("raw-assets")
.baseUrlForCanonicalHeader("https://cdn.example.com")
+ .useIamRole(true)
.build()
)
diff --git a/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginUpdateParamsTest.kt b/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginUpdateParamsTest.kt
index 4d2f3475..c5583783 100644
--- a/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginUpdateParamsTest.kt
+++ b/image-kit-java-core/src/test/kotlin/io/imagekit/models/accounts/origins/OriginUpdateParamsTest.kt
@@ -20,6 +20,7 @@ internal class OriginUpdateParamsTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("images")
+ .useIamRole(true)
.build()
)
.build()
@@ -59,6 +60,7 @@ internal class OriginUpdateParamsTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("images")
+ .useIamRole(true)
.build()
)
.build()
@@ -76,6 +78,7 @@ internal class OriginUpdateParamsTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("images")
+ .useIamRole(true)
.build()
)
)
diff --git a/image-kit-java-core/src/test/kotlin/io/imagekit/services/async/accounts/OriginServiceAsyncTest.kt b/image-kit-java-core/src/test/kotlin/io/imagekit/services/async/accounts/OriginServiceAsyncTest.kt
index df0fcd93..337dab28 100644
--- a/image-kit-java-core/src/test/kotlin/io/imagekit/services/async/accounts/OriginServiceAsyncTest.kt
+++ b/image-kit-java-core/src/test/kotlin/io/imagekit/services/async/accounts/OriginServiceAsyncTest.kt
@@ -30,6 +30,7 @@ internal class OriginServiceAsyncTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("images")
+ .useIamRole(true)
.build()
)
@@ -60,6 +61,7 @@ internal class OriginServiceAsyncTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("images")
+ .useIamRole(true)
.build()
)
.build()
diff --git a/image-kit-java-core/src/test/kotlin/io/imagekit/services/blocking/accounts/OriginServiceTest.kt b/image-kit-java-core/src/test/kotlin/io/imagekit/services/blocking/accounts/OriginServiceTest.kt
index 03fbd1bd..27affbdb 100644
--- a/image-kit-java-core/src/test/kotlin/io/imagekit/services/blocking/accounts/OriginServiceTest.kt
+++ b/image-kit-java-core/src/test/kotlin/io/imagekit/services/blocking/accounts/OriginServiceTest.kt
@@ -30,6 +30,7 @@ internal class OriginServiceTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("images")
+ .useIamRole(true)
.build()
)
@@ -59,6 +60,7 @@ internal class OriginServiceTest {
.baseUrlForCanonicalHeader("https://cdn.example.com")
.includeCanonicalHeader(false)
.prefix("images")
+ .useIamRole(true)
.build()
)
.build()