diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index caf5ca3f..59acac47 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.26.0"
+ ".": "0.27.0"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 6fd49776..91970ebc 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 40
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sent/sent-dm-06f8010dcf4fb680abe33a8ab4fb74b3a2668edb15ef5b995436861e249957d6.yml
-openapi_spec_hash: 969f82ebb2d5e6be2af05c56c4dea585
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sent/sent-dm-7021a6c3b3b6b3951f5fb8a57f9ceb83b362c5ee43f555b53f92b9bd077562e6.yml
+openapi_spec_hash: 692d784b3b48dd4d0a95e34306c7a283
config_hash: 32929c7d4b1344f5bbf67df044a518af
diff --git a/CHANGELOG.md b/CHANGELOG.md
index df81ba6a..4acdb322 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
# Changelog
+## 0.27.0 (2026-05-20)
+
+Full Changelog: [v0.26.0...v0.27.0](https://github.com/sentdm/sent-dm-java/compare/v0.26.0...v0.27.0)
+
+### Features
+
+* **api:** api update ([4e2a7ae](https://github.com/sentdm/sent-dm-java/commit/4e2a7aec5399ffba8eec8d5faa30ab9a18797384))
+* **api:** api update ([c4248c3](https://github.com/sentdm/sent-dm-java/commit/c4248c360c1941d7aa99b74b8fa76acc94b0dfd9))
+
## 0.26.0 (2026-05-14)
Full Changelog: [v0.25.1...v0.26.0](https://github.com/sentdm/sent-dm-java/compare/v0.25.1...v0.26.0)
diff --git a/README.md b/README.md
index 9b141802..91f77e83 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,8 @@
-[](https://central.sonatype.com/artifact/dm.sent/sent-java/0.26.0)
-[](https://javadoc.io/doc/dm.sent/sent-java/0.26.0)
+[](https://central.sonatype.com/artifact/dm.sent/sent-java/0.27.0)
+[](https://javadoc.io/doc/dm.sent/sent-java/0.27.0)
@@ -13,7 +13,7 @@ It is generated with [Stainless](https://www.stainless.com/).
-The REST API documentation can be found on [docs.sent.dm](https://docs.sent.dm). Javadocs are available on [javadoc.io](https://javadoc.io/doc/dm.sent/sent-java/0.26.0).
+The REST API documentation can be found on [docs.sent.dm](https://docs.sent.dm). Javadocs are available on [javadoc.io](https://javadoc.io/doc/dm.sent/sent-java/0.27.0).
@@ -24,7 +24,7 @@ The REST API documentation can be found on [docs.sent.dm](https://docs.sent.dm).
### Gradle
```kotlin
-implementation("dm.sent:sent-java:0.26.0")
+implementation("dm.sent:sent-java:0.27.0")
```
### Maven
@@ -33,7 +33,7 @@ implementation("dm.sent:sent-java:0.26.0")
dm.sent
sent-java
- 0.26.0
+ 0.27.0
```
diff --git a/build.gradle.kts b/build.gradle.kts
index 94aba75d..71d5d34b 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -8,7 +8,7 @@ repositories {
allprojects {
group = "dm.sent"
- version = "0.26.0" // x-release-please-version
+ version = "0.27.0" // x-release-please-version
}
subprojects {
diff --git a/sent-java-core/src/main/kotlin/dm/sent/models/messages/MessageRetrieveActivitiesResponse.kt b/sent-java-core/src/main/kotlin/dm/sent/models/messages/MessageRetrieveActivitiesResponse.kt
index 675aff86..5b73f68e 100644
--- a/sent-java-core/src/main/kotlin/dm/sent/models/messages/MessageRetrieveActivitiesResponse.kt
+++ b/sent-java-core/src/main/kotlin/dm/sent/models/messages/MessageRetrieveActivitiesResponse.kt
@@ -537,7 +537,8 @@ private constructor(
fun price(): Optional = price.getOptional("price")
/**
- * Activity status (e.g., QUEUED, PROCESSED, ROUTED, SENT, DELIVERED, FAILED)
+ * Activity status. Outbound: QUEUED, PROCESSED, ROUTED, SENT, DELIVERED, READ, FAILED.
+ * Inbound (from contact): RECEIVED (terminal).
*
* @throws SentInvalidDataException if the JSON field has an unexpected type (e.g. if
* the server responded with an unexpected value).
@@ -719,7 +720,10 @@ private constructor(
*/
fun price(price: JsonField) = apply { this.price = price }
- /** Activity status (e.g., QUEUED, PROCESSED, ROUTED, SENT, DELIVERED, FAILED) */
+ /**
+ * Activity status. Outbound: QUEUED, PROCESSED, ROUTED, SENT, DELIVERED, READ,
+ * FAILED. Inbound (from contact): RECEIVED (terminal).
+ */
fun status(status: String) = status(JsonField.of(status))
/**
diff --git a/sent-java-core/src/main/kotlin/dm/sent/models/profiles/campaigns/TcrCampaignWithUseCases.kt b/sent-java-core/src/main/kotlin/dm/sent/models/profiles/campaigns/TcrCampaignWithUseCases.kt
index 53022535..18606079 100644
--- a/sent-java-core/src/main/kotlin/dm/sent/models/profiles/campaigns/TcrCampaignWithUseCases.kt
+++ b/sent-java-core/src/main/kotlin/dm/sent/models/profiles/campaigns/TcrCampaignWithUseCases.kt
@@ -870,8 +870,23 @@ private constructor(
*/
fun customerId(customerId: JsonField) = apply { this.customerId = customerId }
+ fun dcaElectionsComplete(dcaElectionsComplete: Boolean?) =
+ dcaElectionsComplete(JsonField.ofNullable(dcaElectionsComplete))
+
+ /**
+ * Alias for [Builder.dcaElectionsComplete].
+ *
+ * This unboxed primitive overload exists for backwards compatibility.
+ */
fun dcaElectionsComplete(dcaElectionsComplete: Boolean) =
- dcaElectionsComplete(JsonField.of(dcaElectionsComplete))
+ dcaElectionsComplete(dcaElectionsComplete as Boolean?)
+
+ /**
+ * Alias for calling [Builder.dcaElectionsComplete] with
+ * `dcaElectionsComplete.orElse(null)`.
+ */
+ fun dcaElectionsComplete(dcaElectionsComplete: Optional) =
+ dcaElectionsComplete(dcaElectionsComplete.getOrNull())
/**
* Sets [Builder.dcaElectionsComplete] to an arbitrary JSON value.
diff --git a/sent-java-core/src/main/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonProps.kt b/sent-java-core/src/main/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonProps.kt
index 0fc246f8..7c681cbe 100644
--- a/sent-java-core/src/main/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonProps.kt
+++ b/sent-java-core/src/main/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonProps.kt
@@ -10,7 +10,9 @@ import dm.sent.core.ExcludeMissing
import dm.sent.core.JsonField
import dm.sent.core.JsonMissing
import dm.sent.core.JsonValue
+import dm.sent.core.checkKnown
import dm.sent.core.checkRequired
+import dm.sent.core.toImmutable
import dm.sent.errors.SentInvalidDataException
import java.util.Collections
import java.util.Objects
@@ -28,6 +30,7 @@ private constructor(
private val text: JsonField,
private val url: JsonField,
private val urlType: JsonField,
+ private val variables: JsonField>,
private val autofillText: JsonField,
private val otpType: JsonField,
private val packageName: JsonField,
@@ -51,6 +54,9 @@ private constructor(
@JsonProperty("text") @ExcludeMissing text: JsonField = JsonMissing.of(),
@JsonProperty("url") @ExcludeMissing url: JsonField = JsonMissing.of(),
@JsonProperty("urlType") @ExcludeMissing urlType: JsonField = JsonMissing.of(),
+ @JsonProperty("variables")
+ @ExcludeMissing
+ variables: JsonField> = JsonMissing.of(),
@JsonProperty("autofillText")
@ExcludeMissing
autofillText: JsonField = JsonMissing.of(),
@@ -70,6 +76,7 @@ private constructor(
text,
url,
urlType,
+ variables,
autofillText,
otpType,
packageName,
@@ -125,6 +132,16 @@ private constructor(
*/
fun urlType(): String = urlType.getRequired("urlType")
+ /**
+ * Variables embedded in a dynamic URL button (only when UrlType = dynamic). Count is capped by
+ * TemplateContentLimits.MaxUrlButtonVariables; the placeholder must appear at the end of Url
+ * (validated in TemplateDefinitionValidator).
+ *
+ * @throws SentInvalidDataException if the JSON field has an unexpected type or is unexpectedly
+ * missing or null (e.g. if the server responded with an unexpected value).
+ */
+ fun variables(): List = variables.getRequired("variables")
+
/**
* @throws SentInvalidDataException if the JSON field has an unexpected type (e.g. if the server
* responded with an unexpected value).
@@ -207,6 +224,15 @@ private constructor(
*/
@JsonProperty("urlType") @ExcludeMissing fun _urlType(): JsonField = urlType
+ /**
+ * Returns the raw JSON value of [variables].
+ *
+ * Unlike [variables], this method doesn't throw if the JSON field has an unexpected type.
+ */
+ @JsonProperty("variables")
+ @ExcludeMissing
+ fun _variables(): JsonField> = variables
+
/**
* Returns the raw JSON value of [autofillText].
*
@@ -267,6 +293,7 @@ private constructor(
* .text()
* .url()
* .urlType()
+ * .variables()
* ```
*/
@JvmStatic fun builder() = Builder()
@@ -283,6 +310,7 @@ private constructor(
private var text: JsonField? = null
private var url: JsonField? = null
private var urlType: JsonField? = null
+ private var variables: JsonField>? = null
private var autofillText: JsonField = JsonMissing.of()
private var otpType: JsonField = JsonMissing.of()
private var packageName: JsonField = JsonMissing.of()
@@ -302,6 +330,10 @@ private constructor(
text = sentDmServicesCommonContractsPocOsTemplateButtonProps.text
url = sentDmServicesCommonContractsPocOsTemplateButtonProps.url
urlType = sentDmServicesCommonContractsPocOsTemplateButtonProps.urlType
+ variables =
+ sentDmServicesCommonContractsPocOsTemplateButtonProps.variables.map {
+ it.toMutableList()
+ }
autofillText = sentDmServicesCommonContractsPocOsTemplateButtonProps.autofillText
otpType = sentDmServicesCommonContractsPocOsTemplateButtonProps.otpType
packageName = sentDmServicesCommonContractsPocOsTemplateButtonProps.packageName
@@ -397,6 +429,36 @@ private constructor(
*/
fun urlType(urlType: JsonField) = apply { this.urlType = urlType }
+ /**
+ * Variables embedded in a dynamic URL button (only when UrlType = dynamic). Count is capped
+ * by TemplateContentLimits.MaxUrlButtonVariables; the placeholder must appear at the end of
+ * Url (validated in TemplateDefinitionValidator).
+ */
+ fun variables(variables: List) = variables(JsonField.of(variables))
+
+ /**
+ * Sets [Builder.variables] to an arbitrary JSON value.
+ *
+ * You should usually call [Builder.variables] with a well-typed `List`
+ * value instead. This method is primarily for setting the field to an undocumented or not
+ * yet supported value.
+ */
+ fun variables(variables: JsonField>) = apply {
+ this.variables = variables.map { it.toMutableList() }
+ }
+
+ /**
+ * Adds a single [TemplateVariable] to [variables].
+ *
+ * @throws IllegalStateException if the field was previously set to a non-list.
+ */
+ fun addVariable(variable: TemplateVariable) = apply {
+ variables =
+ (variables ?: JsonField.of(mutableListOf())).also {
+ checkKnown("variables", it).add(variable)
+ }
+ }
+
fun autofillText(autofillText: String?) = autofillText(JsonField.ofNullable(autofillText))
/** Alias for calling [Builder.autofillText] with `autofillText.orElse(null)`. */
@@ -492,6 +554,7 @@ private constructor(
* .text()
* .url()
* .urlType()
+ * .variables()
* ```
*
* @throws IllegalStateException if any required field is unset.
@@ -506,6 +569,7 @@ private constructor(
checkRequired("text", text),
checkRequired("url", url),
checkRequired("urlType", urlType),
+ checkRequired("variables", variables).map { it.toImmutable() },
autofillText,
otpType,
packageName,
@@ -537,6 +601,7 @@ private constructor(
text()
url()
urlType()
+ variables().forEach { it.validate() }
autofillText()
otpType()
packageName()
@@ -567,6 +632,7 @@ private constructor(
(if (text.asKnown().isPresent) 1 else 0) +
(if (url.asKnown().isPresent) 1 else 0) +
(if (urlType.asKnown().isPresent) 1 else 0) +
+ (variables.asKnown().getOrNull()?.sumOf { it.validity().toInt() } ?: 0) +
(if (autofillText.asKnown().isPresent) 1 else 0) +
(if (otpType.asKnown().isPresent) 1 else 0) +
(if (packageName.asKnown().isPresent) 1 else 0) +
@@ -586,6 +652,7 @@ private constructor(
text == other.text &&
url == other.url &&
urlType == other.urlType &&
+ variables == other.variables &&
autofillText == other.autofillText &&
otpType == other.otpType &&
packageName == other.packageName &&
@@ -603,6 +670,7 @@ private constructor(
text,
url,
urlType,
+ variables,
autofillText,
otpType,
packageName,
@@ -614,5 +682,5 @@ private constructor(
override fun hashCode(): Int = hashCode
override fun toString() =
- "SentDmServicesCommonContractsPocOsTemplateButtonProps{activeFor=$activeFor, countryCode=$countryCode, offerCode=$offerCode, phoneNumber=$phoneNumber, quickReplyType=$quickReplyType, text=$text, url=$url, urlType=$urlType, autofillText=$autofillText, otpType=$otpType, packageName=$packageName, signatureHash=$signatureHash, additionalProperties=$additionalProperties}"
+ "SentDmServicesCommonContractsPocOsTemplateButtonProps{activeFor=$activeFor, countryCode=$countryCode, offerCode=$offerCode, phoneNumber=$phoneNumber, quickReplyType=$quickReplyType, text=$text, url=$url, urlType=$urlType, variables=$variables, autofillText=$autofillText, otpType=$otpType, packageName=$packageName, signatureHash=$signatureHash, additionalProperties=$additionalProperties}"
}
diff --git a/sent-java-core/src/test/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonPropsTest.kt b/sent-java-core/src/test/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonPropsTest.kt
index 76a4dc9f..6c1ef9a9 100644
--- a/sent-java-core/src/test/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonPropsTest.kt
+++ b/sent-java-core/src/test/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonPropsTest.kt
@@ -19,8 +19,26 @@ internal class SentDmServicesCommonContractsPocOsTemplateButtonPropsTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -36,8 +54,27 @@ internal class SentDmServicesCommonContractsPocOsTemplateButtonPropsTest {
assertThat(sentDmServicesCommonContractsPocOsTemplateButtonProps.quickReplyType())
.isEqualTo("x")
assertThat(sentDmServicesCommonContractsPocOsTemplateButtonProps.text()).isEqualTo("text")
- assertThat(sentDmServicesCommonContractsPocOsTemplateButtonProps.url()).isEqualTo("x")
+ assertThat(sentDmServicesCommonContractsPocOsTemplateButtonProps.url()).isEqualTo("url")
assertThat(sentDmServicesCommonContractsPocOsTemplateButtonProps.urlType()).isEqualTo("x")
+ assertThat(sentDmServicesCommonContractsPocOsTemplateButtonProps.variables())
+ .containsExactly(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
assertThat(sentDmServicesCommonContractsPocOsTemplateButtonProps.autofillText())
.contains("autofillText")
assertThat(sentDmServicesCommonContractsPocOsTemplateButtonProps.otpType())
@@ -59,8 +96,26 @@ internal class SentDmServicesCommonContractsPocOsTemplateButtonPropsTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
diff --git a/sent-java-core/src/test/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonTest.kt b/sent-java-core/src/test/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonTest.kt
index f93dd2f7..23bca1b5 100644
--- a/sent-java-core/src/test/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonTest.kt
+++ b/sent-java-core/src/test/kotlin/dm/sent/models/templates/SentDmServicesCommonContractsPocOsTemplateButtonTest.kt
@@ -21,8 +21,26 @@ internal class SentDmServicesCommonContractsPocOsTemplateButtonTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -42,8 +60,26 @@ internal class SentDmServicesCommonContractsPocOsTemplateButtonTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -67,8 +103,26 @@ internal class SentDmServicesCommonContractsPocOsTemplateButtonTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
diff --git a/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateCreateParamsTest.kt b/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateCreateParamsTest.kt
index 6559e8cc..70ae7caf 100644
--- a/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateCreateParamsTest.kt
+++ b/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateCreateParamsTest.kt
@@ -152,8 +152,26 @@ internal class TemplateCreateParamsTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -367,8 +385,26 @@ internal class TemplateCreateParamsTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -601,8 +637,26 @@ internal class TemplateCreateParamsTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -810,8 +864,26 @@ internal class TemplateCreateParamsTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
diff --git a/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateDefinitionTest.kt b/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateDefinitionTest.kt
index cdd9f226..2203c9b1 100644
--- a/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateDefinitionTest.kt
+++ b/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateDefinitionTest.kt
@@ -130,8 +130,26 @@ internal class TemplateDefinitionTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -312,8 +330,26 @@ internal class TemplateDefinitionTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -498,8 +534,26 @@ internal class TemplateDefinitionTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
diff --git a/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateUpdateParamsTest.kt b/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateUpdateParamsTest.kt
index 3681d06a..cad209c1 100644
--- a/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateUpdateParamsTest.kt
+++ b/sent-java-core/src/test/kotlin/dm/sent/models/templates/TemplateUpdateParamsTest.kt
@@ -134,8 +134,26 @@ internal class TemplateUpdateParamsTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -340,8 +358,26 @@ internal class TemplateUpdateParamsTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -556,8 +592,26 @@ internal class TemplateUpdateParamsTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -747,8 +801,26 @@ internal class TemplateUpdateParamsTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
diff --git a/sent-java-core/src/test/kotlin/dm/sent/services/async/TemplateServiceAsyncTest.kt b/sent-java-core/src/test/kotlin/dm/sent/services/async/TemplateServiceAsyncTest.kt
index 6fe03d62..312e7d1d 100644
--- a/sent-java-core/src/test/kotlin/dm/sent/services/async/TemplateServiceAsyncTest.kt
+++ b/sent-java-core/src/test/kotlin/dm/sent/services/async/TemplateServiceAsyncTest.kt
@@ -175,8 +175,26 @@ internal class TemplateServiceAsyncTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -398,8 +416,26 @@ internal class TemplateServiceAsyncTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
diff --git a/sent-java-core/src/test/kotlin/dm/sent/services/blocking/TemplateServiceTest.kt b/sent-java-core/src/test/kotlin/dm/sent/services/blocking/TemplateServiceTest.kt
index 362998dc..6d8f8577 100644
--- a/sent-java-core/src/test/kotlin/dm/sent/services/blocking/TemplateServiceTest.kt
+++ b/sent-java-core/src/test/kotlin/dm/sent/services/blocking/TemplateServiceTest.kt
@@ -175,8 +175,26 @@ internal class TemplateServiceTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")
@@ -396,8 +414,26 @@ internal class TemplateServiceTest {
.phoneNumber("x")
.quickReplyType("x")
.text("text")
- .url("x")
+ .url("url")
.urlType("x")
+ .addVariable(
+ TemplateVariable.builder()
+ .name("x")
+ .props(
+ TemplateVariable.Props.builder()
+ .mediaType("x")
+ .sample("x")
+ .url("x")
+ .variableType("x")
+ .alt("alt")
+ .regex("regex")
+ .shortUrl("shortUrl")
+ .build()
+ )
+ .type("x")
+ .id(0)
+ .build()
+ )
.autofillText("autofillText")
.otpType("otpType")
.packageName("packageName")